mirror of
https://github.com/tstack/lnav.git
synced 2024-08-17 08:50:41 +03:00
[theme] use default styles for cursor-line/selected-text if they are missing from the current theme
Some markdown-related changes as well
This commit is contained in:
parent
4fd6b62380
commit
50e895c289
8
NEWS.md
8
NEWS.md
@ -7,23 +7,27 @@ Features:
|
|||||||
* The `log_opid` column on log vtables can now by `UPDATE`d
|
* The `log_opid` column on log vtables can now by `UPDATE`d
|
||||||
so that you can manually set an opid on log messages that
|
so that you can manually set an opid on log messages that
|
||||||
don't have one. Setting an opid allows messages to show
|
don't have one. Setting an opid allows messages to show
|
||||||
up in the gantt chart view.
|
up in the Gantt chart view.
|
||||||
* Add support for GitHub Markdown Alerts.
|
* Add support for GitHub Markdown Alerts.
|
||||||
|
|
||||||
Interface Changes:
|
Interface Changes:
|
||||||
* In the Gantt chart view, pressing `ENTER` will focus on
|
* In the Gantt chart view, pressing `ENTER` will focus on
|
||||||
the preview pane so you can scroll through messages
|
the preview pane, so you can scroll through messages
|
||||||
with the selected Op ID.
|
with the selected Op ID.
|
||||||
* With mouse mode enabled, `CTRL` can be used as an alternate
|
* With mouse mode enabled, `CTRL` can be used as an alternate
|
||||||
to `SHIFT` when clicking/dragging in the main view to
|
to `SHIFT` when clicking/dragging in the main view to
|
||||||
highlight lines. A few terminals capture shift+clicks as a
|
highlight lines. A few terminals capture shift+clicks as a
|
||||||
way to select text and do not pass them to the application.
|
way to select text and do not pass them to the application.
|
||||||
|
* Clicking on an internal link in a Markdown document will move
|
||||||
|
to that section.
|
||||||
|
|
||||||
Bug Fixes:
|
Bug Fixes:
|
||||||
* Log messages in formats with custom timestamp formats were
|
* Log messages in formats with custom timestamp formats were
|
||||||
not being converted to the local timezone.
|
not being converted to the local timezone.
|
||||||
* The timezone offset is now shown in the parser details
|
* The timezone offset is now shown in the parser details
|
||||||
overlay for log messages.
|
overlay for log messages.
|
||||||
|
* If a theme does not define `cursor-line` or `selected-text`
|
||||||
|
styles, the styles from the default theme will be used.
|
||||||
|
|
||||||
Maintenance:
|
Maintenance:
|
||||||
* You can now do an `UPDATE` on the `lnav_top_view` SQL view.
|
* You can now do an `UPDATE` on the `lnav_top_view` SQL view.
|
||||||
|
@ -333,6 +333,36 @@ scrub_ws(const char* in, ssize_t len)
|
|||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static constexpr const char* const SUPERSCRIPT_NUMS[] = {
|
||||||
|
"⁰",
|
||||||
|
"¹",
|
||||||
|
"²",
|
||||||
|
"³",
|
||||||
|
"⁴",
|
||||||
|
"⁵",
|
||||||
|
"⁶",
|
||||||
|
"⁷",
|
||||||
|
"⁸",
|
||||||
|
"⁹",
|
||||||
|
};
|
||||||
|
|
||||||
|
std::string
|
||||||
|
to_superscript(const std::string& in)
|
||||||
|
{
|
||||||
|
std::string retval;
|
||||||
|
for (const auto ch : in) {
|
||||||
|
if (isdigit(ch)) {
|
||||||
|
auto index = ch - '0';
|
||||||
|
|
||||||
|
retval.append(SUPERSCRIPT_NUMS[index]);
|
||||||
|
} else {
|
||||||
|
retval.push_back(ch);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return retval;
|
||||||
|
}
|
||||||
|
|
||||||
namespace fmt {
|
namespace fmt {
|
||||||
auto
|
auto
|
||||||
formatter<lnav::tainted_string>::format(const lnav::tainted_string& ts,
|
formatter<lnav::tainted_string>::format(const lnav::tainted_string& ts,
|
||||||
|
@ -246,6 +246,15 @@ on_blank(const std::string& str, const std::string& def)
|
|||||||
return str;
|
return str;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string to_superscript(const std::string& in);
|
||||||
|
|
||||||
|
template<typename T, std::enable_if_t<std::is_integral_v<T>, bool> = true>
|
||||||
|
inline std::string
|
||||||
|
to_superscript(T in)
|
||||||
|
{
|
||||||
|
return to_superscript(fmt::to_string(in));
|
||||||
|
}
|
||||||
|
|
||||||
namespace lnav {
|
namespace lnav {
|
||||||
class tainted_string {
|
class tainted_string {
|
||||||
public:
|
public:
|
||||||
@ -282,8 +291,8 @@ private:
|
|||||||
namespace fmt {
|
namespace fmt {
|
||||||
template<>
|
template<>
|
||||||
struct formatter<lnav::tainted_string> : formatter<string_view> {
|
struct formatter<lnav::tainted_string> : formatter<string_view> {
|
||||||
auto format(const lnav::tainted_string& ts,
|
auto format(const lnav::tainted_string& ts, format_context& ctx)
|
||||||
format_context& ctx) -> decltype(ctx.out()) const;
|
-> decltype(ctx.out()) const;
|
||||||
};
|
};
|
||||||
} // namespace fmt
|
} // namespace fmt
|
||||||
|
|
||||||
|
@ -573,7 +573,7 @@ md2attr_line::leave_span(const md4cpp::event_handler::span& sp)
|
|||||||
VC_STYLE.value(text_attrs{A_UNDERLINE}),
|
VC_STYLE.value(text_attrs{A_UNDERLINE}),
|
||||||
});
|
});
|
||||||
} else if (sp.is<MD_SPAN_A_DETAIL*>()) {
|
} else if (sp.is<MD_SPAN_A_DETAIL*>()) {
|
||||||
auto* a_detail = sp.get<MD_SPAN_A_DETAIL*>();
|
const auto* a_detail = sp.get<MD_SPAN_A_DETAIL*>();
|
||||||
auto href_str = std::string(a_detail->href.text, a_detail->href.size);
|
auto href_str = std::string(a_detail->href.text, a_detail->href.size);
|
||||||
line_range lr{
|
line_range lr{
|
||||||
static_cast<int>(this->ml_span_starts.back()),
|
static_cast<int>(this->ml_span_starts.back()),
|
||||||
@ -585,8 +585,9 @@ md2attr_line::leave_span(const md4cpp::event_handler::span& sp)
|
|||||||
});
|
});
|
||||||
this->append_url_footnote(href_str);
|
this->append_url_footnote(href_str);
|
||||||
} else if (sp.is<MD_SPAN_IMG_DETAIL*>()) {
|
} else if (sp.is<MD_SPAN_IMG_DETAIL*>()) {
|
||||||
auto* img_detail = sp.get<MD_SPAN_IMG_DETAIL*>();
|
const auto* img_detail = sp.get<MD_SPAN_IMG_DETAIL*>();
|
||||||
auto src_str = std::string(img_detail->src.text, img_detail->src.size);
|
const auto src_str
|
||||||
|
= std::string(img_detail->src.text, img_detail->src.size);
|
||||||
|
|
||||||
this->append_url_footnote(src_str);
|
this->append_url_footnote(src_str);
|
||||||
}
|
}
|
||||||
@ -747,7 +748,7 @@ md2attr_line::to_attr_line(const pugi::xml_node& doc)
|
|||||||
.append(" ")
|
.append(" ")
|
||||||
.append(
|
.append(
|
||||||
lnav::string::attrs::href(link_label, src_href.value()))
|
lnav::string::attrs::href(link_label, src_href.value()))
|
||||||
.appendf(FMT_STRING("[{}]"), this->ml_footnotes.size() + 1);
|
.append(to_superscript(this->ml_footnotes.size() + 1));
|
||||||
|
|
||||||
auto href
|
auto href
|
||||||
= attr_line_t()
|
= attr_line_t()
|
||||||
@ -1014,7 +1015,7 @@ md2attr_line::text(MD_TEXTTYPE tt, const string_fragment& sf)
|
|||||||
std::string span_text;
|
std::string span_text;
|
||||||
|
|
||||||
auto loop_res = REPL_RE.capture_from(sf).for_each(
|
auto loop_res = REPL_RE.capture_from(sf).for_each(
|
||||||
[&span_text](lnav::pcre2pp::match_data& md) {
|
[&span_text](const lnav::pcre2pp::match_data& md) {
|
||||||
span_text += md.leading();
|
span_text += md.leading();
|
||||||
|
|
||||||
auto matched = *md[0];
|
auto matched = *md[0];
|
||||||
@ -1054,12 +1055,8 @@ md2attr_line::text(MD_TEXTTYPE tt, const string_fragment& sf)
|
|||||||
void
|
void
|
||||||
md2attr_line::append_url_footnote(std::string href_str)
|
md2attr_line::append_url_footnote(std::string href_str)
|
||||||
{
|
{
|
||||||
if (startswith(href_str, "#")) {
|
auto is_internal = startswith(href_str, "#");
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
auto& last_block = this->ml_blocks.back();
|
auto& last_block = this->ml_blocks.back();
|
||||||
last_block.appendf(FMT_STRING("[{}]"), this->ml_footnotes.size() + 1);
|
|
||||||
last_block.with_attr(string_attr{
|
last_block.with_attr(string_attr{
|
||||||
line_range{
|
line_range{
|
||||||
(int) this->ml_span_starts.back(),
|
(int) this->ml_span_starts.back(),
|
||||||
@ -1067,6 +1064,15 @@ md2attr_line::append_url_footnote(std::string href_str)
|
|||||||
},
|
},
|
||||||
VC_STYLE.value(text_attrs{A_UNDERLINE}),
|
VC_STYLE.value(text_attrs{A_UNDERLINE}),
|
||||||
});
|
});
|
||||||
|
if (is_internal) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this->ml_last_superscript_index == last_block.length()) {
|
||||||
|
last_block.append("\u02d2");
|
||||||
|
}
|
||||||
|
last_block.append(to_superscript(this->ml_footnotes.size() + 1));
|
||||||
|
this->ml_last_superscript_index = last_block.length();
|
||||||
if (this->ml_source_path && href_str.find(':') == std::string::npos) {
|
if (this->ml_source_path && href_str.find(':') == std::string::npos) {
|
||||||
auto link_path = ghc::filesystem::absolute(
|
auto link_path = ghc::filesystem::absolute(
|
||||||
this->ml_source_path.value().parent_path() / href_str);
|
this->ml_source_path.value().parent_path() / href_str);
|
||||||
|
@ -91,6 +91,7 @@ private:
|
|||||||
std::vector<std::pair<std::string, size_t>> ml_html_starts;
|
std::vector<std::pair<std::string, size_t>> ml_html_starts;
|
||||||
std::vector<attr_line_t> ml_footnotes;
|
std::vector<attr_line_t> ml_footnotes;
|
||||||
int32_t ml_code_depth{0};
|
int32_t ml_code_depth{0};
|
||||||
|
ssize_t ml_last_superscript_index{-1};
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -49,7 +49,8 @@ to_text_line(const std::vector<attr_line_t>& lines)
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
plain_text_source::plain_text_source(const std::string& text)
|
plain_text_source::
|
||||||
|
plain_text_source(const std::string& text)
|
||||||
{
|
{
|
||||||
size_t start = 0, end;
|
size_t start = 0, end;
|
||||||
|
|
||||||
@ -64,12 +65,14 @@ plain_text_source::plain_text_source(const std::string& text)
|
|||||||
this->tds_longest_line = this->compute_longest_line();
|
this->tds_longest_line = this->compute_longest_line();
|
||||||
}
|
}
|
||||||
|
|
||||||
plain_text_source::plain_text_source(const std::vector<std::string>& text_lines)
|
plain_text_source::
|
||||||
|
plain_text_source(const std::vector<std::string>& text_lines)
|
||||||
{
|
{
|
||||||
this->replace_with(text_lines);
|
this->replace_with(text_lines);
|
||||||
}
|
}
|
||||||
|
|
||||||
plain_text_source::plain_text_source(const std::vector<attr_line_t>& text_lines)
|
plain_text_source::
|
||||||
|
plain_text_source(const std::vector<attr_line_t>& text_lines)
|
||||||
: tds_lines(to_text_line(text_lines))
|
: tds_lines(to_text_line(text_lines))
|
||||||
{
|
{
|
||||||
this->tds_longest_line = this->compute_longest_line();
|
this->tds_longest_line = this->compute_longest_line();
|
||||||
@ -432,8 +435,7 @@ plain_text_source::row_for_anchor(const std::string& id)
|
|||||||
meta.m_sections_root.get(),
|
meta.m_sections_root.get(),
|
||||||
[this, &id, &retval](const lnav::document::hier_node* node) {
|
[this, &id, &retval](const lnav::document::hier_node* node) {
|
||||||
for (const auto& child_pair : node->hn_named_children) {
|
for (const auto& child_pair : node->hn_named_children) {
|
||||||
const auto& child_anchor
|
const auto& child_anchor = to_anchor_string(child_pair.first);
|
||||||
= text_anchors::to_anchor_string(child_pair.first);
|
|
||||||
|
|
||||||
if (child_anchor != id) {
|
if (child_anchor != id) {
|
||||||
continue;
|
continue;
|
||||||
@ -456,8 +458,7 @@ plain_text_source::get_anchors()
|
|||||||
this->tds_doc_sections.m_sections_root.get(),
|
this->tds_doc_sections.m_sections_root.get(),
|
||||||
[&retval](const lnav::document::hier_node* node) {
|
[&retval](const lnav::document::hier_node* node) {
|
||||||
for (const auto& child_pair : node->hn_named_children) {
|
for (const auto& child_pair : node->hn_named_children) {
|
||||||
retval.emplace(
|
retval.emplace(to_anchor_string(child_pair.first));
|
||||||
text_anchors::to_anchor_string(child_pair.first));
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -488,8 +489,7 @@ plain_text_source::anchor_for_row(vis_line_t vl)
|
|||||||
|| this->tds_text_format == text_format_t::TF_MARKDOWN)
|
|| this->tds_text_format == text_format_t::TF_MARKDOWN)
|
||||||
&& path_for_line.back().is<std::string>())
|
&& path_for_line.back().is<std::string>())
|
||||||
{
|
{
|
||||||
return text_anchors::to_anchor_string(
|
return to_anchor_string(path_for_line.back().get<std::string>());
|
||||||
path_for_line.back().get<std::string>());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
auto comps = path_for_line | lnav::itertools::map([](const auto& elem) {
|
auto comps = path_for_line | lnav::itertools::map([](const auto& elem) {
|
||||||
@ -505,7 +505,7 @@ plain_text_source::anchor_for_row(vis_line_t vl)
|
|||||||
}
|
}
|
||||||
|
|
||||||
std::optional<vis_line_t>
|
std::optional<vis_line_t>
|
||||||
plain_text_source::adjacent_anchor(vis_line_t vl, text_anchors::direction dir)
|
plain_text_source::adjacent_anchor(vis_line_t vl, direction dir)
|
||||||
{
|
{
|
||||||
if (vl > this->tds_lines.size()
|
if (vl > this->tds_lines.size()
|
||||||
|| this->tds_doc_sections.m_sections_root == nullptr)
|
|| this->tds_doc_sections.m_sections_root == nullptr)
|
||||||
@ -525,14 +525,14 @@ plain_text_source::adjacent_anchor(vis_line_t vl, text_anchors::direction dir)
|
|||||||
}
|
}
|
||||||
|
|
||||||
switch (dir) {
|
switch (dir) {
|
||||||
case text_anchors::direction::prev: {
|
case direction::prev: {
|
||||||
if (neighbors_res->cnr_previous) {
|
if (neighbors_res->cnr_previous) {
|
||||||
return this->line_for_offset(
|
return this->line_for_offset(
|
||||||
neighbors_res->cnr_previous.value()->hn_start);
|
neighbors_res->cnr_previous.value()->hn_start);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case text_anchors::direction::next: {
|
case direction::next: {
|
||||||
if (neighbors_res->cnr_next) {
|
if (neighbors_res->cnr_next) {
|
||||||
return this->line_for_offset(
|
return this->line_for_offset(
|
||||||
neighbors_res->cnr_next.value()->hn_start);
|
neighbors_res->cnr_next.value()->hn_start);
|
||||||
@ -585,14 +585,14 @@ plain_text_source::adjacent_anchor(vis_line_t vl, text_anchors::direction dir)
|
|||||||
}
|
}
|
||||||
|
|
||||||
switch (dir) {
|
switch (dir) {
|
||||||
case text_anchors::direction::prev: {
|
case direction::prev: {
|
||||||
if (neighbors_res->cnr_previous) {
|
if (neighbors_res->cnr_previous) {
|
||||||
return this->line_for_offset(
|
return this->line_for_offset(
|
||||||
neighbors_res->cnr_previous.value()->hn_start);
|
neighbors_res->cnr_previous.value()->hn_start);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case text_anchors::direction::next: {
|
case direction::next: {
|
||||||
if (neighbors_res->cnr_next) {
|
if (neighbors_res->cnr_next) {
|
||||||
return this->line_for_offset(
|
return this->line_for_offset(
|
||||||
neighbors_res->cnr_next.value()->hn_start);
|
neighbors_res->cnr_next.value()->hn_start);
|
||||||
|
@ -38,6 +38,7 @@
|
|||||||
#include "base/time_util.hh"
|
#include "base/time_util.hh"
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
#include "data_scanner.hh"
|
#include "data_scanner.hh"
|
||||||
|
#include "date/solar_hijri.h"
|
||||||
#include "fmt/format.h"
|
#include "fmt/format.h"
|
||||||
#include "lnav_config.hh"
|
#include "lnav_config.hh"
|
||||||
#include "log_format_fwd.hh"
|
#include "log_format_fwd.hh"
|
||||||
@ -693,6 +694,29 @@ textview_curses::handle_mouse(mouse_event& me)
|
|||||||
}
|
}
|
||||||
this->tc_selection_start = std::nullopt;
|
this->tc_selection_start = std::nullopt;
|
||||||
}
|
}
|
||||||
|
if (me.me_button == mouse_button_t::BUTTON_LEFT
|
||||||
|
&& mouse_line.is<main_content>())
|
||||||
|
{
|
||||||
|
const auto& [mc_line] = mouse_line.get<main_content>();
|
||||||
|
attr_line_t al;
|
||||||
|
|
||||||
|
this->textview_value_for_row(mc_line, al);
|
||||||
|
auto get_res = get_string_attr(al.get_attrs(),
|
||||||
|
&VC_HYPERLINK,
|
||||||
|
this->lv_left + me.me_press_x);
|
||||||
|
if (get_res) {
|
||||||
|
auto href = get_res.value()->sa_value.get<std::string>();
|
||||||
|
|
||||||
|
if (startswith(href, "#")) {
|
||||||
|
auto* ta
|
||||||
|
= dynamic_cast<text_anchors*>(this->tc_sub_source);
|
||||||
|
if (ta != nullptr) {
|
||||||
|
ta->row_for_anchor(href) |
|
||||||
|
[this](auto row) { this->set_selection(row); };
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
if (this->tc_delegate != nullptr) {
|
if (this->tc_delegate != nullptr) {
|
||||||
this->tc_delegate->text_handle_mouse(*this, mouse_line, me);
|
this->tc_delegate->text_handle_mouse(*this, mouse_line, me);
|
||||||
}
|
}
|
||||||
|
@ -848,11 +848,12 @@ void
|
|||||||
view_colors::init_roles(const lnav_theme& lt,
|
view_colors::init_roles(const lnav_theme& lt,
|
||||||
lnav_config_listener::error_reporter& reporter)
|
lnav_config_listener::error_reporter& reporter)
|
||||||
{
|
{
|
||||||
|
const auto& default_theme = lnav_config.lc_ui_theme_defs["default"];
|
||||||
rgb_color fg, bg;
|
rgb_color fg, bg;
|
||||||
std::string err;
|
std::string err;
|
||||||
|
|
||||||
/* Setup the mappings from roles to actual colors. */
|
/* Setup the mappings from roles to actual colors. */
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_TEXT)]
|
this->get_role_attrs(role_t::VCR_TEXT)
|
||||||
= this->to_attrs(lt, lt.lt_style_text, reporter);
|
= this->to_attrs(lt, lt.lt_style_text, reporter);
|
||||||
|
|
||||||
for (int ansi_fg = 0; ansi_fg < 8; ansi_fg++) {
|
for (int ansi_fg = 0; ansi_fg < 8; ansi_fg++) {
|
||||||
@ -908,122 +909,119 @@ view_colors::init_roles(const lnav_theme& lt,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (lnav_config.lc_ui_dim_text) {
|
if (lnav_config.lc_ui_dim_text) {
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_TEXT)]
|
this->get_role_attrs(role_t::VCR_TEXT).ra_normal.ta_attrs |= A_DIM;
|
||||||
.ra_normal.ta_attrs
|
this->get_role_attrs(role_t::VCR_TEXT).ra_reverse.ta_attrs |= A_DIM;
|
||||||
|= A_DIM;
|
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_TEXT)]
|
|
||||||
.ra_reverse.ta_attrs
|
|
||||||
|= A_DIM;
|
|
||||||
}
|
}
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_SEARCH)]
|
this->get_role_attrs(role_t::VCR_SEARCH)
|
||||||
= role_attrs{text_attrs{A_REVERSE}, text_attrs{A_REVERSE}};
|
= role_attrs{text_attrs{A_REVERSE}, text_attrs{A_REVERSE}};
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_SEARCH)]
|
this->get_role_attrs(role_t::VCR_SEARCH).ra_class_name
|
||||||
.ra_class_name
|
|
||||||
= intern_string::lookup("-lnav_styles_search");
|
= intern_string::lookup("-lnav_styles_search");
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_IDENTIFIER)]
|
this->get_role_attrs(role_t::VCR_IDENTIFIER)
|
||||||
= this->to_attrs(lt, lt.lt_style_identifier, reporter);
|
= this->to_attrs(lt, lt.lt_style_identifier, reporter);
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_OK)]
|
this->get_role_attrs(role_t::VCR_OK)
|
||||||
= this->to_attrs(lt, lt.lt_style_ok, reporter);
|
= this->to_attrs(lt, lt.lt_style_ok, reporter);
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_INFO)]
|
this->get_role_attrs(role_t::VCR_INFO)
|
||||||
= this->to_attrs(lt, lt.lt_style_info, reporter);
|
= this->to_attrs(lt, lt.lt_style_info, reporter);
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_ERROR)]
|
this->get_role_attrs(role_t::VCR_ERROR)
|
||||||
= this->to_attrs(lt, lt.lt_style_error, reporter);
|
= this->to_attrs(lt, lt.lt_style_error, reporter);
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_WARNING)]
|
this->get_role_attrs(role_t::VCR_WARNING)
|
||||||
= this->to_attrs(lt, lt.lt_style_warning, reporter);
|
= this->to_attrs(lt, lt.lt_style_warning, reporter);
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_ALT_ROW)]
|
this->get_role_attrs(role_t::VCR_ALT_ROW)
|
||||||
= this->to_attrs(lt, lt.lt_style_alt_text, reporter);
|
= this->to_attrs(lt, lt.lt_style_alt_text, reporter);
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_HIDDEN)]
|
this->get_role_attrs(role_t::VCR_HIDDEN)
|
||||||
= this->to_attrs(lt, lt.lt_style_hidden, reporter);
|
= this->to_attrs(lt, lt.lt_style_hidden, reporter);
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_CURSOR_LINE)]
|
this->get_role_attrs(role_t::VCR_CURSOR_LINE)
|
||||||
= this->to_attrs(lt, lt.lt_style_cursor_line, reporter);
|
= this->to_attrs(lt, lt.lt_style_cursor_line, reporter);
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(
|
if (this->get_role_attrs(role_t::VCR_CURSOR_LINE).ra_normal.empty()) {
|
||||||
role_t::VCR_DISABLED_CURSOR_LINE)]
|
this->get_role_attrs(role_t::VCR_CURSOR_LINE) = this->to_attrs(
|
||||||
|
default_theme, default_theme.lt_style_cursor_line, reporter);
|
||||||
|
}
|
||||||
|
this->get_role_attrs(role_t::VCR_DISABLED_CURSOR_LINE)
|
||||||
= this->to_attrs(lt, lt.lt_style_disabled_cursor_line, reporter);
|
= this->to_attrs(lt, lt.lt_style_disabled_cursor_line, reporter);
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_ADJUSTED_TIME)]
|
if (this->get_role_attrs(role_t::VCR_DISABLED_CURSOR_LINE)
|
||||||
|
.ra_normal.empty())
|
||||||
|
{
|
||||||
|
this->get_role_attrs(role_t::VCR_DISABLED_CURSOR_LINE)
|
||||||
|
= this->to_attrs(default_theme,
|
||||||
|
default_theme.lt_style_disabled_cursor_line,
|
||||||
|
reporter);
|
||||||
|
}
|
||||||
|
this->get_role_attrs(role_t::VCR_ADJUSTED_TIME)
|
||||||
= this->to_attrs(lt, lt.lt_style_adjusted_time, reporter);
|
= this->to_attrs(lt, lt.lt_style_adjusted_time, reporter);
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_SKEWED_TIME)]
|
this->get_role_attrs(role_t::VCR_SKEWED_TIME)
|
||||||
= this->to_attrs(lt, lt.lt_style_skewed_time, reporter);
|
= this->to_attrs(lt, lt.lt_style_skewed_time, reporter);
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_OFFSET_TIME)]
|
this->get_role_attrs(role_t::VCR_OFFSET_TIME)
|
||||||
= this->to_attrs(lt, lt.lt_style_offset_time, reporter);
|
= this->to_attrs(lt, lt.lt_style_offset_time, reporter);
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_FILE_OFFSET)]
|
this->get_role_attrs(role_t::VCR_FILE_OFFSET)
|
||||||
= this->to_attrs(lt, lt.lt_style_file_offset, reporter);
|
= this->to_attrs(lt, lt.lt_style_file_offset, reporter);
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_INVALID_MSG)]
|
this->get_role_attrs(role_t::VCR_INVALID_MSG)
|
||||||
= this->to_attrs(lt, lt.lt_style_invalid_msg, reporter);
|
= this->to_attrs(lt, lt.lt_style_invalid_msg, reporter);
|
||||||
|
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_STATUS)]
|
this->get_role_attrs(role_t::VCR_STATUS)
|
||||||
= this->to_attrs(lt, lt.lt_style_status, reporter);
|
= this->to_attrs(lt, lt.lt_style_status, reporter);
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_WARN_STATUS)]
|
this->get_role_attrs(role_t::VCR_WARN_STATUS)
|
||||||
= this->to_attrs(lt, lt.lt_style_warn_status, reporter);
|
= this->to_attrs(lt, lt.lt_style_warn_status, reporter);
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_ALERT_STATUS)]
|
this->get_role_attrs(role_t::VCR_ALERT_STATUS)
|
||||||
= this->to_attrs(lt, lt.lt_style_alert_status, reporter);
|
= this->to_attrs(lt, lt.lt_style_alert_status, reporter);
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_ACTIVE_STATUS)]
|
this->get_role_attrs(role_t::VCR_ACTIVE_STATUS)
|
||||||
= this->to_attrs(lt, lt.lt_style_active_status, reporter);
|
= this->to_attrs(lt, lt.lt_style_active_status, reporter);
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_ACTIVE_STATUS2)]
|
this->get_role_attrs(role_t::VCR_ACTIVE_STATUS2) = role_attrs{
|
||||||
= role_attrs{
|
this->get_role_attrs(role_t::VCR_ACTIVE_STATUS).ra_normal,
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(
|
this->get_role_attrs(role_t::VCR_ACTIVE_STATUS).ra_reverse,
|
||||||
role_t::VCR_ACTIVE_STATUS)]
|
};
|
||||||
.ra_normal,
|
this->get_role_attrs(role_t::VCR_ACTIVE_STATUS2).ra_normal.ta_attrs
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(
|
|
||||||
role_t::VCR_ACTIVE_STATUS)]
|
|
||||||
.ra_reverse,
|
|
||||||
};
|
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_ACTIVE_STATUS2)]
|
|
||||||
.ra_normal.ta_attrs
|
|
||||||
|= A_BOLD;
|
|= A_BOLD;
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_ACTIVE_STATUS2)]
|
this->get_role_attrs(role_t::VCR_ACTIVE_STATUS2).ra_reverse.ta_attrs
|
||||||
.ra_reverse.ta_attrs
|
|
||||||
|= A_BOLD;
|
|= A_BOLD;
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_STATUS_TITLE)]
|
this->get_role_attrs(role_t::VCR_STATUS_TITLE)
|
||||||
= this->to_attrs(lt, lt.lt_style_status_title, reporter);
|
= this->to_attrs(lt, lt.lt_style_status_title, reporter);
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_STATUS_SUBTITLE)]
|
this->get_role_attrs(role_t::VCR_STATUS_SUBTITLE)
|
||||||
= this->to_attrs(lt, lt.lt_style_status_subtitle, reporter);
|
= this->to_attrs(lt, lt.lt_style_status_subtitle, reporter);
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_STATUS_INFO)]
|
this->get_role_attrs(role_t::VCR_STATUS_INFO)
|
||||||
= this->to_attrs(lt, lt.lt_style_status_info, reporter);
|
= this->to_attrs(lt, lt.lt_style_status_info, reporter);
|
||||||
|
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_STATUS_HOTKEY)]
|
this->get_role_attrs(role_t::VCR_STATUS_HOTKEY)
|
||||||
= this->to_attrs(lt, lt.lt_style_status_hotkey, reporter);
|
= this->to_attrs(lt, lt.lt_style_status_hotkey, reporter);
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(
|
this->get_role_attrs(role_t::VCR_STATUS_TITLE_HOTKEY)
|
||||||
role_t::VCR_STATUS_TITLE_HOTKEY)]
|
|
||||||
= this->to_attrs(lt, lt.lt_style_status_title_hotkey, reporter);
|
= this->to_attrs(lt, lt.lt_style_status_title_hotkey, reporter);
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(
|
this->get_role_attrs(role_t::VCR_STATUS_DISABLED_TITLE)
|
||||||
role_t::VCR_STATUS_DISABLED_TITLE)]
|
|
||||||
= this->to_attrs(lt, lt.lt_style_status_disabled_title, reporter);
|
= this->to_attrs(lt, lt.lt_style_status_disabled_title, reporter);
|
||||||
|
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_H1)]
|
this->get_role_attrs(role_t::VCR_H1)
|
||||||
= this->to_attrs(lt, lt.lt_style_header[0], reporter);
|
= this->to_attrs(lt, lt.lt_style_header[0], reporter);
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_H2)]
|
this->get_role_attrs(role_t::VCR_H2)
|
||||||
= this->to_attrs(lt, lt.lt_style_header[1], reporter);
|
= this->to_attrs(lt, lt.lt_style_header[1], reporter);
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_H3)]
|
this->get_role_attrs(role_t::VCR_H3)
|
||||||
= this->to_attrs(lt, lt.lt_style_header[2], reporter);
|
= this->to_attrs(lt, lt.lt_style_header[2], reporter);
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_H4)]
|
this->get_role_attrs(role_t::VCR_H4)
|
||||||
= this->to_attrs(lt, lt.lt_style_header[3], reporter);
|
= this->to_attrs(lt, lt.lt_style_header[3], reporter);
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_H5)]
|
this->get_role_attrs(role_t::VCR_H5)
|
||||||
= this->to_attrs(lt, lt.lt_style_header[4], reporter);
|
= this->to_attrs(lt, lt.lt_style_header[4], reporter);
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_H6)]
|
this->get_role_attrs(role_t::VCR_H6)
|
||||||
= this->to_attrs(lt, lt.lt_style_header[5], reporter);
|
= this->to_attrs(lt, lt.lt_style_header[5], reporter);
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_HR)]
|
this->get_role_attrs(role_t::VCR_HR)
|
||||||
= this->to_attrs(lt, lt.lt_style_hr, reporter);
|
= this->to_attrs(lt, lt.lt_style_hr, reporter);
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_HYPERLINK)]
|
this->get_role_attrs(role_t::VCR_HYPERLINK)
|
||||||
= this->to_attrs(lt, lt.lt_style_hyperlink, reporter);
|
= this->to_attrs(lt, lt.lt_style_hyperlink, reporter);
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_LIST_GLYPH)]
|
this->get_role_attrs(role_t::VCR_LIST_GLYPH)
|
||||||
= this->to_attrs(lt, lt.lt_style_list_glyph, reporter);
|
= this->to_attrs(lt, lt.lt_style_list_glyph, reporter);
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_BREADCRUMB)]
|
this->get_role_attrs(role_t::VCR_BREADCRUMB)
|
||||||
= this->to_attrs(lt, lt.lt_style_breadcrumb, reporter);
|
= this->to_attrs(lt, lt.lt_style_breadcrumb, reporter);
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_TABLE_BORDER)]
|
this->get_role_attrs(role_t::VCR_TABLE_BORDER)
|
||||||
= this->to_attrs(lt, lt.lt_style_table_border, reporter);
|
= this->to_attrs(lt, lt.lt_style_table_border, reporter);
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_TABLE_HEADER)]
|
this->get_role_attrs(role_t::VCR_TABLE_HEADER)
|
||||||
= this->to_attrs(lt, lt.lt_style_table_header, reporter);
|
= this->to_attrs(lt, lt.lt_style_table_header, reporter);
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_QUOTE_BORDER)]
|
this->get_role_attrs(role_t::VCR_QUOTE_BORDER)
|
||||||
= this->to_attrs(lt, lt.lt_style_quote_border, reporter);
|
= this->to_attrs(lt, lt.lt_style_quote_border, reporter);
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_QUOTED_TEXT)]
|
this->get_role_attrs(role_t::VCR_QUOTED_TEXT)
|
||||||
= this->to_attrs(lt, lt.lt_style_quoted_text, reporter);
|
= this->to_attrs(lt, lt.lt_style_quoted_text, reporter);
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_FOOTNOTE_BORDER)]
|
this->get_role_attrs(role_t::VCR_FOOTNOTE_BORDER)
|
||||||
= this->to_attrs(lt, lt.lt_style_footnote_border, reporter);
|
= this->to_attrs(lt, lt.lt_style_footnote_border, reporter);
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_FOOTNOTE_TEXT)]
|
this->get_role_attrs(role_t::VCR_FOOTNOTE_TEXT)
|
||||||
= this->to_attrs(lt, lt.lt_style_footnote_text, reporter);
|
= this->to_attrs(lt, lt.lt_style_footnote_text, reporter);
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_SNIPPET_BORDER)]
|
this->get_role_attrs(role_t::VCR_SNIPPET_BORDER)
|
||||||
= this->to_attrs(lt, lt.lt_style_snippet_border, reporter);
|
= this->to_attrs(lt, lt.lt_style_snippet_border, reporter);
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_INDENT_GUIDE)]
|
this->get_role_attrs(role_t::VCR_INDENT_GUIDE)
|
||||||
= this->to_attrs(lt, lt.lt_style_indent_guide, reporter);
|
= this->to_attrs(lt, lt.lt_style_indent_guide, reporter);
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -1033,8 +1031,7 @@ view_colors::init_roles(const lnav_theme& lt,
|
|||||||
= lt.lt_style_status_subtitle.pp_value.sc_background_color;
|
= lt.lt_style_status_subtitle.pp_value.sc_background_color;
|
||||||
stitch_sc.pp_value.sc_background_color
|
stitch_sc.pp_value.sc_background_color
|
||||||
= lt.lt_style_status_title.pp_value.sc_background_color;
|
= lt.lt_style_status_title.pp_value.sc_background_color;
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(
|
this->get_role_attrs(role_t::VCR_STATUS_STITCH_TITLE_TO_SUB)
|
||||||
role_t::VCR_STATUS_STITCH_TITLE_TO_SUB)]
|
|
||||||
= this->to_attrs(lt, stitch_sc, reporter);
|
= this->to_attrs(lt, stitch_sc, reporter);
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
@ -1044,8 +1041,7 @@ view_colors::init_roles(const lnav_theme& lt,
|
|||||||
= lt.lt_style_status_title.pp_value.sc_background_color;
|
= lt.lt_style_status_title.pp_value.sc_background_color;
|
||||||
stitch_sc.pp_value.sc_background_color
|
stitch_sc.pp_value.sc_background_color
|
||||||
= lt.lt_style_status_subtitle.pp_value.sc_background_color;
|
= lt.lt_style_status_subtitle.pp_value.sc_background_color;
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(
|
this->get_role_attrs(role_t::VCR_STATUS_STITCH_SUB_TO_TITLE)
|
||||||
role_t::VCR_STATUS_STITCH_SUB_TO_TITLE)]
|
|
||||||
= this->to_attrs(lt, stitch_sc, reporter);
|
= this->to_attrs(lt, stitch_sc, reporter);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1056,8 +1052,7 @@ view_colors::init_roles(const lnav_theme& lt,
|
|||||||
= lt.lt_style_status.pp_value.sc_background_color;
|
= lt.lt_style_status.pp_value.sc_background_color;
|
||||||
stitch_sc.pp_value.sc_background_color
|
stitch_sc.pp_value.sc_background_color
|
||||||
= lt.lt_style_status_subtitle.pp_value.sc_background_color;
|
= lt.lt_style_status_subtitle.pp_value.sc_background_color;
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(
|
this->get_role_attrs(role_t::VCR_STATUS_STITCH_SUB_TO_NORMAL)
|
||||||
role_t::VCR_STATUS_STITCH_SUB_TO_NORMAL)]
|
|
||||||
= this->to_attrs(lt, stitch_sc, reporter);
|
= this->to_attrs(lt, stitch_sc, reporter);
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
@ -1067,8 +1062,7 @@ view_colors::init_roles(const lnav_theme& lt,
|
|||||||
= lt.lt_style_status_subtitle.pp_value.sc_background_color;
|
= lt.lt_style_status_subtitle.pp_value.sc_background_color;
|
||||||
stitch_sc.pp_value.sc_background_color
|
stitch_sc.pp_value.sc_background_color
|
||||||
= lt.lt_style_status.pp_value.sc_background_color;
|
= lt.lt_style_status.pp_value.sc_background_color;
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(
|
this->get_role_attrs(role_t::VCR_STATUS_STITCH_NORMAL_TO_SUB)
|
||||||
role_t::VCR_STATUS_STITCH_NORMAL_TO_SUB)]
|
|
||||||
= this->to_attrs(lt, stitch_sc, reporter);
|
= this->to_attrs(lt, stitch_sc, reporter);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1079,8 +1073,7 @@ view_colors::init_roles(const lnav_theme& lt,
|
|||||||
= lt.lt_style_status.pp_value.sc_background_color;
|
= lt.lt_style_status.pp_value.sc_background_color;
|
||||||
stitch_sc.pp_value.sc_background_color
|
stitch_sc.pp_value.sc_background_color
|
||||||
= lt.lt_style_status_title.pp_value.sc_background_color;
|
= lt.lt_style_status_title.pp_value.sc_background_color;
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(
|
this->get_role_attrs(role_t::VCR_STATUS_STITCH_TITLE_TO_NORMAL)
|
||||||
role_t::VCR_STATUS_STITCH_TITLE_TO_NORMAL)]
|
|
||||||
= this->to_attrs(lt, stitch_sc, reporter);
|
= this->to_attrs(lt, stitch_sc, reporter);
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
@ -1090,25 +1083,22 @@ view_colors::init_roles(const lnav_theme& lt,
|
|||||||
= lt.lt_style_status_title.pp_value.sc_background_color;
|
= lt.lt_style_status_title.pp_value.sc_background_color;
|
||||||
stitch_sc.pp_value.sc_background_color
|
stitch_sc.pp_value.sc_background_color
|
||||||
= lt.lt_style_status.pp_value.sc_background_color;
|
= lt.lt_style_status.pp_value.sc_background_color;
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(
|
this->get_role_attrs(role_t::VCR_STATUS_STITCH_NORMAL_TO_TITLE)
|
||||||
role_t::VCR_STATUS_STITCH_NORMAL_TO_TITLE)]
|
|
||||||
= this->to_attrs(lt, stitch_sc, reporter);
|
= this->to_attrs(lt, stitch_sc, reporter);
|
||||||
}
|
}
|
||||||
|
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_INACTIVE_STATUS)]
|
this->get_role_attrs(role_t::VCR_INACTIVE_STATUS)
|
||||||
= this->to_attrs(lt, lt.lt_style_inactive_status, reporter);
|
= this->to_attrs(lt, lt.lt_style_inactive_status, reporter);
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(
|
this->get_role_attrs(role_t::VCR_INACTIVE_ALERT_STATUS)
|
||||||
role_t::VCR_INACTIVE_ALERT_STATUS)]
|
|
||||||
= this->to_attrs(lt, lt.lt_style_inactive_alert_status, reporter);
|
= this->to_attrs(lt, lt.lt_style_inactive_alert_status, reporter);
|
||||||
|
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_POPUP)]
|
this->get_role_attrs(role_t::VCR_POPUP)
|
||||||
= this->to_attrs(lt, lt.lt_style_popup, reporter);
|
= this->to_attrs(lt, lt.lt_style_popup, reporter);
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_FOCUSED)]
|
this->get_role_attrs(role_t::VCR_FOCUSED)
|
||||||
= this->to_attrs(lt, lt.lt_style_focused, reporter);
|
= this->to_attrs(lt, lt.lt_style_focused, reporter);
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(
|
this->get_role_attrs(role_t::VCR_DISABLED_FOCUSED)
|
||||||
role_t::VCR_DISABLED_FOCUSED)]
|
|
||||||
= this->to_attrs(lt, lt.lt_style_disabled_focused, reporter);
|
= this->to_attrs(lt, lt.lt_style_disabled_focused, reporter);
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_SCROLLBAR)]
|
this->get_role_attrs(role_t::VCR_SCROLLBAR)
|
||||||
= this->to_attrs(lt, lt.lt_style_scrollbar, reporter);
|
= this->to_attrs(lt, lt.lt_style_scrollbar, reporter);
|
||||||
{
|
{
|
||||||
positioned_property<style_config> bar_sc;
|
positioned_property<style_config> bar_sc;
|
||||||
@ -1116,8 +1106,7 @@ view_colors::init_roles(const lnav_theme& lt,
|
|||||||
bar_sc.pp_value.sc_color = lt.lt_style_error.pp_value.sc_color;
|
bar_sc.pp_value.sc_color = lt.lt_style_error.pp_value.sc_color;
|
||||||
bar_sc.pp_value.sc_background_color
|
bar_sc.pp_value.sc_background_color
|
||||||
= lt.lt_style_scrollbar.pp_value.sc_background_color;
|
= lt.lt_style_scrollbar.pp_value.sc_background_color;
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(
|
this->get_role_attrs(role_t::VCR_SCROLLBAR_ERROR)
|
||||||
role_t::VCR_SCROLLBAR_ERROR)]
|
|
||||||
= this->to_attrs(lt, bar_sc, reporter);
|
= this->to_attrs(lt, bar_sc, reporter);
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
@ -1126,67 +1115,70 @@ view_colors::init_roles(const lnav_theme& lt,
|
|||||||
bar_sc.pp_value.sc_color = lt.lt_style_warning.pp_value.sc_color;
|
bar_sc.pp_value.sc_color = lt.lt_style_warning.pp_value.sc_color;
|
||||||
bar_sc.pp_value.sc_background_color
|
bar_sc.pp_value.sc_background_color
|
||||||
= lt.lt_style_scrollbar.pp_value.sc_background_color;
|
= lt.lt_style_scrollbar.pp_value.sc_background_color;
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(
|
this->get_role_attrs(role_t::VCR_SCROLLBAR_WARNING)
|
||||||
role_t::VCR_SCROLLBAR_WARNING)]
|
|
||||||
= this->to_attrs(lt, bar_sc, reporter);
|
= this->to_attrs(lt, bar_sc, reporter);
|
||||||
}
|
}
|
||||||
|
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_INLINE_CODE)]
|
this->get_role_attrs(role_t::VCR_INLINE_CODE)
|
||||||
= this->to_attrs(lt, lt.lt_style_inline_code, reporter);
|
= this->to_attrs(lt, lt.lt_style_inline_code, reporter);
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_QUOTED_CODE)]
|
this->get_role_attrs(role_t::VCR_QUOTED_CODE)
|
||||||
= this->to_attrs(lt, lt.lt_style_quoted_code, reporter);
|
= this->to_attrs(lt, lt.lt_style_quoted_code, reporter);
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_CODE_BORDER)]
|
this->get_role_attrs(role_t::VCR_CODE_BORDER)
|
||||||
= this->to_attrs(lt, lt.lt_style_code_border, reporter);
|
= this->to_attrs(lt, lt.lt_style_code_border, reporter);
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_KEYWORD)]
|
this->get_role_attrs(role_t::VCR_KEYWORD)
|
||||||
= this->to_attrs(lt, lt.lt_style_keyword, reporter);
|
= this->to_attrs(lt, lt.lt_style_keyword, reporter);
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_STRING)]
|
this->get_role_attrs(role_t::VCR_STRING)
|
||||||
= this->to_attrs(lt, lt.lt_style_string, reporter);
|
= this->to_attrs(lt, lt.lt_style_string, reporter);
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_COMMENT)]
|
this->get_role_attrs(role_t::VCR_COMMENT)
|
||||||
= this->to_attrs(lt, lt.lt_style_comment, reporter);
|
= this->to_attrs(lt, lt.lt_style_comment, reporter);
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_DOC_DIRECTIVE)]
|
this->get_role_attrs(role_t::VCR_DOC_DIRECTIVE)
|
||||||
= this->to_attrs(lt, lt.lt_style_doc_directive, reporter);
|
= this->to_attrs(lt, lt.lt_style_doc_directive, reporter);
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_VARIABLE)]
|
this->get_role_attrs(role_t::VCR_VARIABLE)
|
||||||
= this->to_attrs(lt, lt.lt_style_variable, reporter);
|
= this->to_attrs(lt, lt.lt_style_variable, reporter);
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_SYMBOL)]
|
this->get_role_attrs(role_t::VCR_SYMBOL)
|
||||||
= this->to_attrs(lt, lt.lt_style_symbol, reporter);
|
= this->to_attrs(lt, lt.lt_style_symbol, reporter);
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_NULL)]
|
this->get_role_attrs(role_t::VCR_NULL)
|
||||||
= this->to_attrs(lt, lt.lt_style_null, reporter);
|
= this->to_attrs(lt, lt.lt_style_null, reporter);
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_ASCII_CTRL)]
|
this->get_role_attrs(role_t::VCR_ASCII_CTRL)
|
||||||
= this->to_attrs(lt, lt.lt_style_ascii_ctrl, reporter);
|
= this->to_attrs(lt, lt.lt_style_ascii_ctrl, reporter);
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_NON_ASCII)]
|
this->get_role_attrs(role_t::VCR_NON_ASCII)
|
||||||
= this->to_attrs(lt, lt.lt_style_non_ascii, reporter);
|
= this->to_attrs(lt, lt.lt_style_non_ascii, reporter);
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_NUMBER)]
|
this->get_role_attrs(role_t::VCR_NUMBER)
|
||||||
= this->to_attrs(lt, lt.lt_style_number, reporter);
|
= this->to_attrs(lt, lt.lt_style_number, reporter);
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_FUNCTION)]
|
this->get_role_attrs(role_t::VCR_FUNCTION)
|
||||||
= this->to_attrs(lt, lt.lt_style_function, reporter);
|
= this->to_attrs(lt, lt.lt_style_function, reporter);
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_TYPE)]
|
this->get_role_attrs(role_t::VCR_TYPE)
|
||||||
= this->to_attrs(lt, lt.lt_style_type, reporter);
|
= this->to_attrs(lt, lt.lt_style_type, reporter);
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_SEP_REF_ACC)]
|
this->get_role_attrs(role_t::VCR_SEP_REF_ACC)
|
||||||
= this->to_attrs(lt, lt.lt_style_sep_ref_acc, reporter);
|
= this->to_attrs(lt, lt.lt_style_sep_ref_acc, reporter);
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_SUGGESTION)]
|
this->get_role_attrs(role_t::VCR_SUGGESTION)
|
||||||
= this->to_attrs(lt, lt.lt_style_suggestion, reporter);
|
= this->to_attrs(lt, lt.lt_style_suggestion, reporter);
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_SELECTED_TEXT)]
|
this->get_role_attrs(role_t::VCR_SELECTED_TEXT)
|
||||||
= this->to_attrs(lt, lt.lt_style_selected_text, reporter);
|
= this->to_attrs(lt, lt.lt_style_selected_text, reporter);
|
||||||
|
if (this->get_role_attrs(role_t::VCR_SELECTED_TEXT).ra_normal.empty()) {
|
||||||
|
this->get_role_attrs(role_t::VCR_SELECTED_TEXT) = this->to_attrs(
|
||||||
|
default_theme, default_theme.lt_style_selected_text, reporter);
|
||||||
|
}
|
||||||
|
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_RE_SPECIAL)]
|
this->get_role_attrs(role_t::VCR_RE_SPECIAL)
|
||||||
= this->to_attrs(lt, lt.lt_style_re_special, reporter);
|
= this->to_attrs(lt, lt.lt_style_re_special, reporter);
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_RE_REPEAT)]
|
this->get_role_attrs(role_t::VCR_RE_REPEAT)
|
||||||
= this->to_attrs(lt, lt.lt_style_re_repeat, reporter);
|
= this->to_attrs(lt, lt.lt_style_re_repeat, reporter);
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_FILE)]
|
this->get_role_attrs(role_t::VCR_FILE)
|
||||||
= this->to_attrs(lt, lt.lt_style_file, reporter);
|
= this->to_attrs(lt, lt.lt_style_file, reporter);
|
||||||
|
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_DIFF_DELETE)]
|
this->get_role_attrs(role_t::VCR_DIFF_DELETE)
|
||||||
= this->to_attrs(lt, lt.lt_style_diff_delete, reporter);
|
= this->to_attrs(lt, lt.lt_style_diff_delete, reporter);
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_DIFF_ADD)]
|
this->get_role_attrs(role_t::VCR_DIFF_ADD)
|
||||||
= this->to_attrs(lt, lt.lt_style_diff_add, reporter);
|
= this->to_attrs(lt, lt.lt_style_diff_add, reporter);
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_DIFF_SECTION)]
|
this->get_role_attrs(role_t::VCR_DIFF_SECTION)
|
||||||
= this->to_attrs(lt, lt.lt_style_diff_section, reporter);
|
= this->to_attrs(lt, lt.lt_style_diff_section, reporter);
|
||||||
|
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_LOW_THRESHOLD)]
|
this->get_role_attrs(role_t::VCR_LOW_THRESHOLD)
|
||||||
= this->to_attrs(lt, lt.lt_style_low_threshold, reporter);
|
= this->to_attrs(lt, lt.lt_style_low_threshold, reporter);
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_MED_THRESHOLD)]
|
this->get_role_attrs(role_t::VCR_MED_THRESHOLD)
|
||||||
= this->to_attrs(lt, lt.lt_style_med_threshold, reporter);
|
= this->to_attrs(lt, lt.lt_style_med_threshold, reporter);
|
||||||
this->vc_role_attrs[lnav::enums::to_underlying(role_t::VCR_HIGH_THRESHOLD)]
|
this->get_role_attrs(role_t::VCR_HIGH_THRESHOLD)
|
||||||
= this->to_attrs(lt, lt.lt_style_high_threshold, reporter);
|
= this->to_attrs(lt, lt.lt_style_high_threshold, reporter);
|
||||||
|
|
||||||
for (auto level = static_cast<log_level_t>(LEVEL_UNKNOWN + 1);
|
for (auto level = static_cast<log_level_t>(LEVEL_UNKNOWN + 1);
|
||||||
|
@ -292,6 +292,11 @@ private:
|
|||||||
const positioned_property<style_config>& sc,
|
const positioned_property<style_config>& sc,
|
||||||
lnav_config_listener::error_reporter& reporter);
|
lnav_config_listener::error_reporter& reporter);
|
||||||
|
|
||||||
|
role_attrs& get_role_attrs(const role_t role)
|
||||||
|
{
|
||||||
|
return this->vc_role_attrs[lnav::enums::to_underlying(role)];
|
||||||
|
}
|
||||||
|
|
||||||
role_attrs vc_level_attrs[LEVEL__MAX];
|
role_attrs vc_level_attrs[LEVEL__MAX];
|
||||||
|
|
||||||
/** Map of role IDs to attribute values. */
|
/** Map of role IDs to attribute values. */
|
||||||
|
@ -426,7 +426,7 @@ can always use [37m[40m q [0m to pop the top view off of the stack.
|
|||||||
CTRL+], ESCAPE Abort command-line entry started with [37m[40m / [0m, [37m[40m : [0m,
|
CTRL+], ESCAPE Abort command-line entry started with [37m[40m / [0m, [37m[40m : [0m,
|
||||||
[37m[40m ; [0m, or [37m[40m | [0m.
|
[37m[40m ; [0m, or [37m[40m | [0m.
|
||||||
|
|
||||||
▌[1mNote[0m: The regular expression format used by lnav is ]8;;http://perldoc.perl.org/perlre.html\[4mPCRE[0m]8;;\[4m[1][0m
|
▌[1mNote[0m: The regular expression format used by lnav is ]8;;http://perldoc.perl.org/perlre.html\[4mPCRE[0m]8;;\¹
|
||||||
▌(Perl-Compatible Regular Expressions).
|
▌(Perl-Compatible Regular Expressions).
|
||||||
▌
|
▌
|
||||||
▌ [34m▌[0m[1] - http://perldoc.perl.org/perlre.html
|
▌ [34m▌[0m[1] - http://perldoc.perl.org/perlre.html
|
||||||
@ -577,7 +577,7 @@ example of a top ten query into the "/tmp/topten.db" file, you can do:
|
|||||||
|
|
||||||
[4mPRQL Support[0m
|
[4mPRQL Support[0m
|
||||||
|
|
||||||
The Pipelined Relational Query Language ]8;;https://prql-lang.org\[4m(PRQL)[0m]8;;\[4m[1][0m is an alternative
|
The Pipelined Relational Query Language ]8;;https://prql-lang.org\[4m(PRQL)[0m]8;;\¹ is an alternative
|
||||||
database query language that compiles to SQL. The main advantage of
|
database query language that compiles to SQL. The main advantage of
|
||||||
PRQL, in the context of lnav, is that it is easier to work with
|
PRQL, in the context of lnav, is that it is easier to work with
|
||||||
interactively compared to SQL. For example, lnav can provide previews
|
interactively compared to SQL. For example, lnav can provide previews
|
||||||
@ -589,8 +589,8 @@ tab-completions for the columns in the result set.
|
|||||||
You can execute a PRQL query in the SQL prompt. A PRQL query starts
|
You can execute a PRQL query in the SQL prompt. A PRQL query starts
|
||||||
with the [37m[40m from [0m keyword that specifies the table to use as a data
|
with the [37m[40m from [0m keyword that specifies the table to use as a data
|
||||||
source. The next stage of a pipeline is started by entering a pipe
|
source. The next stage of a pipeline is started by entering a pipe
|
||||||
symbol ([37m[40m | [0m) followed by a ]8;;https://prql-lang.org/book/reference/stdlib/transforms/index.html\[4mPRQL transform[0m]8;;\[4m[1][0m. As you build the query
|
symbol ([37m[40m | [0m) followed by a ]8;;https://prql-lang.org/book/reference/stdlib/transforms/index.html\[4mPRQL transform[0m]8;;\¹. As you build the query in
|
||||||
in the prompt, lnav will display any relevant help and preview for the
|
the prompt, lnav will display any relevant help and preview for the
|
||||||
current and previous stages of the pipeline.
|
current and previous stages of the pipeline.
|
||||||
|
|
||||||
[34m▌[0m[1] - https://prql-lang.org/book/reference/stdlib/transforms/index.html
|
[34m▌[0m[1] - https://prql-lang.org/book/reference/stdlib/transforms/index.html
|
||||||
|
@ -11,7 +11,7 @@ Run [37m[40m ./autogen.sh [0m if compiling from a cloned repository.
|
|||||||
|
|
||||||
[1mSee Also[0m
|
[1mSee Also[0m
|
||||||
|
|
||||||
]8;;https://github.com/rcoh/angle-grinder\[4mAngle-grinder[0m]8;;\[4m[1][0m is a tool to slice and dice log files on the
|
]8;;https://github.com/rcoh/angle-grinder\[4mAngle-grinder[0m]8;;\¹ is a tool to slice and dice log files on the
|
||||||
command-line. If you're familiar with the SumoLogic query language,
|
command-line. If you're familiar with the SumoLogic query language,
|
||||||
you might find this tool more comfortable to work with.
|
you might find this tool more comfortable to work with.
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
]8;;https://github.com/tstack/lnav/actions?query=workflow%3Aci-build\[4m🖼 Build[1][0m]8;;\[4m[2][0m ]8;;https://docs.lnav.org\[4m🖼 Docs[3][0m]8;;\[4m[4][0m ]8;;https://coveralls.io/github/tstack/lnav?branch=master\[4m🖼 Coverage Status[5][0m]8;;\[4m[6][0m ]8;;https://snapcraft.io/lnav\[4m🖼 lnav[7][0m]8;;\[4m[8][0m
|
]8;;https://github.com/tstack/lnav/actions?query=workflow%3Aci-build\[4m🖼 Build[0m]8;;\]8;;https://github.com/tstack/lnav/actions?query=workflow%3Aci-build\[4m¹[0m]8;;\˒² ]8;;https://docs.lnav.org\[4m🖼 Docs[0m]8;;\]8;;https://docs.lnav.org\[4m³[0m]8;;\˒⁴ ]8;;https://coveralls.io/github/tstack/lnav?branch=master\[4m🖼 Coverage Status[0m]8;;\]8;;https://coveralls.io/github/tstack/lnav?branch=master\[4m⁵[0m]8;;\˒⁶ ]8;;https://snapcraft.io/lnav\[4m🖼 lnav[0m]8;;\]8;;https://snapcraft.io/lnav\[4m⁷[0m]8;;\˒⁸
|
||||||
|
|
||||||
[34m▌[0m[1] - https://github.com/tstack/lnav/workflows/ci-build/badge.svg
|
[34m▌[0m[1] - https://github.com/tstack/lnav/workflows/ci-build/badge.svg
|
||||||
[34m▌[0m[2] - https://github.com/tstack/lnav/actions?query=workflow%3Aci-build
|
[34m▌[0m[2] - https://github.com/tstack/lnav/actions?query=workflow%3Aci-build
|
||||||
@ -9,13 +9,13 @@
|
|||||||
[34m▌[0m[7] - https://snapcraft.io/lnav/badge.svg
|
[34m▌[0m[7] - https://snapcraft.io/lnav/badge.svg
|
||||||
[34m▌[0m[8] - https://snapcraft.io/lnav
|
[34m▌[0m[8] - https://snapcraft.io/lnav
|
||||||
|
|
||||||
]8;;https://discord.gg/erBPnKwz7R\[4m🖼 [0m]8;;\]8;;https://discord.gg/erBPnKwz7R\[4mDiscord Logo[0m]8;;\]8;;https://discord.gg/erBPnKwz7R\[4m[1][0m]8;;\[4m[2][0m
|
]8;;https://discord.gg/erBPnKwz7R\[4m🖼 [0m]8;;\]8;;https://discord.gg/erBPnKwz7R\[4mDiscord Logo[0m]8;;\]8;;https://discord.gg/erBPnKwz7R\[4m¹[0m]8;;\²
|
||||||
|
|
||||||
[34m▌[0m[1] - https://assets-global.website-files.com/6257adef93867e50d84d30e2/62594fddd654fc29fcc07359_cb48d2a8d4991281d7a6a95d2f58195e.svg
|
[34m▌[0m[1] - https://assets-global.website-files.com/6257adef93867e50d84d30e2/62594fddd654fc29fcc07359_cb48d2a8d4991281d7a6a95d2f58195e.svg
|
||||||
[34m▌[0m[2] - https://discord.gg/erBPnKwz7R
|
[34m▌[0m[2] - https://discord.gg/erBPnKwz7R
|
||||||
|
|
||||||
[4mThis is the source repository for [0m[1m[4mlnav[0m[4m, visit [0m]8;;https://lnav.org\[4mhttps://lnav.org[0m]8;;\[4m[1][0m[4m for[0m
|
[4mThis is the source repository for [0m[1m[4mlnav[0m[4m, visit [0m]8;;https://lnav.org\[4mhttps://lnav.org[0m]8;;\[4m¹ for a[0m
|
||||||
[4ma high level overview.[0m
|
[4mhigh level overview.[0m
|
||||||
|
|
||||||
[34m▌[0m[1] - https://lnav.org
|
[34m▌[0m[1] - https://lnav.org
|
||||||
|
|
||||||
@ -30,21 +30,21 @@ set of files/directories, [1mlnav[0m will:
|
|||||||
[33m•[0m tail the files, follow renames, find new files in
|
[33m•[0m tail the files, follow renames, find new files in
|
||||||
directories;
|
directories;
|
||||||
[33m•[0m build an index of errors and warnings;
|
[33m•[0m build an index of errors and warnings;
|
||||||
[33m•[0m ]8;;https://docs.lnav.org/en/latest/formats.html#json-lines\[4mpretty-print JSON-lines[0m]8;;\[4m[1][0m.
|
[33m•[0m ]8;;https://docs.lnav.org/en/latest/formats.html#json-lines\[4mpretty-print JSON-lines[0m]8;;\¹.
|
||||||
|
|
||||||
[34m▌[0m[1] - https://docs.lnav.org/en/latest/formats.html#json-lines
|
[34m▌[0m[1] - https://docs.lnav.org/en/latest/formats.html#json-lines
|
||||||
|
|
||||||
Then, in the [1mlnav[0m TUI, you can:
|
Then, in the [1mlnav[0m TUI, you can:
|
||||||
|
|
||||||
[33m•[0m jump quickly to the previous/next error (]8;;https://docs.lnav.org/en/latest/hotkeys.html#spatial-navigation\[4mpress [0m]8;;\]8;;https://docs.lnav.org/en/latest/hotkeys.html#spatial-navigation\[4m[37m[40m e [0m]8;;\]8;;https://docs.lnav.org/en/latest/hotkeys.html#spatial-navigation\[4m/[0m]8;;\]8;;https://docs.lnav.org/en/latest/hotkeys.html#spatial-navigation\[4m[37m[40m E [0m]8;;\[4m[1][0m);
|
[33m•[0m jump quickly to the previous/next error (]8;;https://docs.lnav.org/en/latest/hotkeys.html#spatial-navigation\[4mpress [0m]8;;\]8;;https://docs.lnav.org/en/latest/hotkeys.html#spatial-navigation\[4m[37m[40m e [0m]8;;\]8;;https://docs.lnav.org/en/latest/hotkeys.html#spatial-navigation\[4m/[0m]8;;\]8;;https://docs.lnav.org/en/latest/hotkeys.html#spatial-navigation\[4m[37m[40m E [0m]8;;\¹);
|
||||||
[33m•[0m search using regular expressions (]8;;https://docs.lnav.org/en/latest/hotkeys.html#spatial-navigation\[4mpress [0m]8;;\]8;;https://docs.lnav.org/en/latest/hotkeys.html#spatial-navigation\[4m[37m[40m / [0m]8;;\[4m[2][0m);
|
[33m•[0m search using regular expressions (]8;;https://docs.lnav.org/en/latest/hotkeys.html#spatial-navigation\[4mpress [0m]8;;\]8;;https://docs.lnav.org/en/latest/hotkeys.html#spatial-navigation\[4m[37m[40m / [0m]8;;\²);
|
||||||
[33m•[0m highlight text with a regular expression (]8;;https://docs.lnav.org/en/latest/commands.html#highlight-pattern\[4m[37m[40m :highlight [0m]8;;\[4m[3][0m
|
[33m•[0m highlight text with a regular expression (]8;;https://docs.lnav.org/en/latest/commands.html#highlight-pattern\[4m[37m[40m :highlight [0m]8;;\³
|
||||||
command);
|
command);
|
||||||
[33m•[0m filter messages using ]8;;https://docs.lnav.org/en/latest/usage.html#regular-expression-match\[4mregular expressions[0m]8;;\[4m[4][0m or ]8;;https://docs.lnav.org/en/latest/usage.html#sqlite-expression\[4mSQLite[0m]8;;\
|
[33m•[0m filter messages using ]8;;https://docs.lnav.org/en/latest/usage.html#regular-expression-match\[4mregular expressions[0m]8;;\⁴ or ]8;;https://docs.lnav.org/en/latest/usage.html#sqlite-expression\[4mSQLite[0m]8;;\
|
||||||
]8;;https://docs.lnav.org/en/latest/usage.html#sqlite-expression\[4mexpressions[0m]8;;\[4m[5][0m;
|
]8;;https://docs.lnav.org/en/latest/usage.html#sqlite-expression\[4mexpressions[0m]8;;\⁵;
|
||||||
[33m•[0m pretty-print structured text (]8;;https://docs.lnav.org/en/latest/ui.html#pretty\[4mpress [0m]8;;\]8;;https://docs.lnav.org/en/latest/ui.html#pretty\[4m[37m[40m P [0m]8;;\[4m[6][0m);
|
[33m•[0m pretty-print structured text (]8;;https://docs.lnav.org/en/latest/ui.html#pretty\[4mpress [0m]8;;\]8;;https://docs.lnav.org/en/latest/ui.html#pretty\[4m[37m[40m P [0m]8;;\⁶);
|
||||||
[33m•[0m view a histogram of messages over time (]8;;https://docs.lnav.org/en/latest/ui.html#hist\[4mpress [0m]8;;\]8;;https://docs.lnav.org/en/latest/ui.html#hist\[4m[37m[40m i [0m]8;;\[4m[7][0m);
|
[33m•[0m view a histogram of messages over time (]8;;https://docs.lnav.org/en/latest/ui.html#hist\[4mpress [0m]8;;\]8;;https://docs.lnav.org/en/latest/ui.html#hist\[4m[37m[40m i [0m]8;;\⁷);
|
||||||
[33m•[0m query messages using SQLite (]8;;https://docs.lnav.org/en/latest/sqlext.html\[4mpress [0m]8;;\]8;;https://docs.lnav.org/en/latest/sqlext.html\[4m[37m[40m ; [0m]8;;\[4m[8][0m)
|
[33m•[0m query messages using SQLite (]8;;https://docs.lnav.org/en/latest/sqlext.html\[4mpress [0m]8;;\]8;;https://docs.lnav.org/en/latest/sqlext.html\[4m[37m[40m ; [0m]8;;\⁸)
|
||||||
|
|
||||||
[34m▌[0m[1] - https://docs.lnav.org/en/latest/hotkeys.html#spatial-navigation
|
[34m▌[0m[1] - https://docs.lnav.org/en/latest/hotkeys.html#spatial-navigation
|
||||||
[34m▌[0m[2] - https://docs.lnav.org/en/latest/hotkeys.html#spatial-navigation
|
[34m▌[0m[2] - https://docs.lnav.org/en/latest/hotkeys.html#spatial-navigation
|
||||||
@ -61,7 +61,7 @@ The following screenshot shows a mix of syslog and web access log
|
|||||||
files. Failed requests are shown in red. Identifiers, like IP
|
files. Failed requests are shown in red. Identifiers, like IP
|
||||||
address and PIDs are semantically highlighted.
|
address and PIDs are semantically highlighted.
|
||||||
|
|
||||||
]8;;docs/assets/images/lnav-front-page.png\[4m🖼 Screenshot[1][0m]8;;\[4m[2][0m
|
]8;;docs/assets/images/lnav-front-page.png\[4m🖼 Screenshot[0m]8;;\]8;;docs/assets/images/lnav-front-page.png\[4m¹[0m]8;;\˒²
|
||||||
|
|
||||||
[34m▌[0m[1] - file://{top_srcdir}/docs/assets/images/lnav-front-page.png
|
[34m▌[0m[1] - file://{top_srcdir}/docs/assets/images/lnav-front-page.png
|
||||||
[34m▌[0m[2] - file://{top_srcdir}/docs/assets/images/lnav-front-page.png
|
[34m▌[0m[2] - file://{top_srcdir}/docs/assets/images/lnav-front-page.png
|
||||||
@ -83,21 +83,21 @@ You can SSH into a demo node to play with lnav before installing.
|
|||||||
The [35m"playground"[0m account starts lnav with a couple of log files as an
|
The [35m"playground"[0m account starts lnav with a couple of log files as an
|
||||||
example:
|
example:
|
||||||
|
|
||||||
]8;;ssh://playground@demo.lnav.org\[4m[37m[40m $ ssh playground@demo.lnav.org [0m]8;;\[4m[1][0m
|
]8;;ssh://playground@demo.lnav.org\[4m[37m[40m $ ssh playground@demo.lnav.org [0m]8;;\¹
|
||||||
|
|
||||||
[34m▌[0m[1] - ssh://playground@demo.lnav.org
|
[34m▌[0m[1] - ssh://playground@demo.lnav.org
|
||||||
|
|
||||||
The [35m"tutorial 1"[0m account is an interactive tutorial that can teach you
|
The [35m"tutorial 1"[0m account is an interactive tutorial that can teach you
|
||||||
the basics of operation:
|
the basics of operation:
|
||||||
|
|
||||||
]8;;ssh://tutorial1@demo.lnav.org\[4m[37m[40m $ ssh tutorial1@demo.lnav.org [0m]8;;\[4m[1][0m
|
]8;;ssh://tutorial1@demo.lnav.org\[4m[37m[40m $ ssh tutorial1@demo.lnav.org [0m]8;;\¹
|
||||||
|
|
||||||
[34m▌[0m[1] - ssh://tutorial1@demo.lnav.org
|
[34m▌[0m[1] - ssh://tutorial1@demo.lnav.org
|
||||||
|
|
||||||
[1mInstallation[0m
|
[1mInstallation[0m
|
||||||
|
|
||||||
]8;;https://github.com/tstack/lnav/releases/latest#release-artifacts\[4mDownload a statically-linked binary for Linux/MacOS from the release[0m]8;;\
|
]8;;https://github.com/tstack/lnav/releases/latest#release-artifacts\[4mDownload a statically-linked binary for Linux/MacOS from the release[0m]8;;\
|
||||||
]8;;https://github.com/tstack/lnav/releases/latest#release-artifacts\[4mpage[0m]8;;\[4m[1][0m
|
]8;;https://github.com/tstack/lnav/releases/latest#release-artifacts\[4mpage[0m]8;;\¹
|
||||||
|
|
||||||
[34m▌[0m[1] - https://github.com/tstack/lnav/releases/latest#release-artifacts
|
[34m▌[0m[1] - https://github.com/tstack/lnav/releases/latest#release-artifacts
|
||||||
|
|
||||||
@ -118,7 +118,7 @@ indexing has finished, the LOG view will display the log messages that
|
|||||||
were recognized[^1]. You can then use the usual hotkeys to move around
|
were recognized[^1]. You can then use the usual hotkeys to move around
|
||||||
the view (arrow keys or [37m[40m j [0m/[37m[40m k [0m/[37m[40m h [0m/[37m[40m l [0m to move down/up/left/right).
|
the view (arrow keys or [37m[40m j [0m/[37m[40m k [0m/[37m[40m h [0m/[37m[40m l [0m to move down/up/left/right).
|
||||||
|
|
||||||
See the ]8;;https://docs.lnav.org/en/latest/usage.html\[4mUsage section[0m]8;;\[4m[1][0m of the online documentation for more
|
See the ]8;;https://docs.lnav.org/en/latest/usage.html\[4mUsage section[0m]8;;\¹ of the online documentation for more
|
||||||
information.
|
information.
|
||||||
|
|
||||||
[34m▌[0m[1] - https://docs.lnav.org/en/latest/usage.html
|
[34m▌[0m[1] - https://docs.lnav.org/en/latest/usage.html
|
||||||
@ -173,9 +173,9 @@ log lines fed into [37m[40m lnav [0m via [37m[40m journalctl [0m's [37m[
|
|||||||
Please file issues on this repository or use the discussions section.
|
Please file issues on this repository or use the discussions section.
|
||||||
The following alternatives are also available:
|
The following alternatives are also available:
|
||||||
|
|
||||||
[33m•[0m ]8;;mailto:support@lnav.org\[4msupport@lnav.org[0m]8;;\[4m[1][0m
|
[33m•[0m ]8;;mailto:support@lnav.org\[4msupport@lnav.org[0m]8;;\¹
|
||||||
[33m•[0m ]8;;https://discord.gg/erBPnKwz7R\[4mDiscord[0m]8;;\[4m[2][0m
|
[33m•[0m ]8;;https://discord.gg/erBPnKwz7R\[4mDiscord[0m]8;;\²
|
||||||
[33m•[0m ]8;;https://groups.google.com/g/lnav\[4mGoogle Groups[0m]8;;\[4m[3][0m
|
[33m•[0m ]8;;https://groups.google.com/g/lnav\[4mGoogle Groups[0m]8;;\³
|
||||||
|
|
||||||
[34m▌[0m[1] - mailto:support@lnav.org
|
[34m▌[0m[1] - mailto:support@lnav.org
|
||||||
[34m▌[0m[2] - https://discord.gg/erBPnKwz7R
|
[34m▌[0m[2] - https://discord.gg/erBPnKwz7R
|
||||||
@ -183,9 +183,9 @@ The following alternatives are also available:
|
|||||||
|
|
||||||
[1mLinks[0m
|
[1mLinks[0m
|
||||||
|
|
||||||
[33m•[0m ]8;;https://lnav.org\[4mMain Site[0m]8;;\[4m[1][0m
|
[33m•[0m ]8;;https://lnav.org\[4mMain Site[0m]8;;\¹
|
||||||
[33m•[0m ]8;;https://docs.lnav.org\[1m[4mDocumentation[0m]8;;\[4m[2][0m on Read the Docs
|
[33m•[0m ]8;;https://docs.lnav.org\[1m[4mDocumentation[0m]8;;\² on Read the Docs
|
||||||
[33m•[0m ]8;;ARCHITECTURE.md\[4mInternal Architecture[0m]8;;\[4m[3][0m
|
[33m•[0m ]8;;ARCHITECTURE.md\[4mInternal Architecture[0m]8;;\³
|
||||||
|
|
||||||
[34m▌[0m[1] - https://lnav.org
|
[34m▌[0m[1] - https://lnav.org
|
||||||
[34m▌[0m[2] - https://docs.lnav.org
|
[34m▌[0m[2] - https://docs.lnav.org
|
||||||
@ -193,7 +193,7 @@ The following alternatives are also available:
|
|||||||
|
|
||||||
[1mContributing[0m
|
[1mContributing[0m
|
||||||
|
|
||||||
[33m•[0m ]8;;https://github.com/sponsors/tstack\[4mBecome a Sponsor on GitHub[0m]8;;\[4m[1][0m
|
[33m•[0m ]8;;https://github.com/sponsors/tstack\[4mBecome a Sponsor on GitHub[0m]8;;\¹
|
||||||
|
|
||||||
[34m▌[0m[1] - https://github.com/sponsors/tstack
|
[34m▌[0m[1] - https://github.com/sponsors/tstack
|
||||||
|
|
||||||
@ -234,7 +234,7 @@ Run [37m[40m ./autogen.sh [0m if compiling from a cloned repository.
|
|||||||
|
|
||||||
[1mSee Also[0m
|
[1mSee Also[0m
|
||||||
|
|
||||||
]8;;https://github.com/rcoh/angle-grinder\[4mAngle-grinder[0m]8;;\[4m[1][0m is a tool to slice and dice log files on the
|
]8;;https://github.com/rcoh/angle-grinder\[4mAngle-grinder[0m]8;;\¹ is a tool to slice and dice log files on the
|
||||||
command-line. If you're familiar with the SumoLogic query language,
|
command-line. If you're familiar with the SumoLogic query language,
|
||||||
you might find this tool more comfortable to work with.
|
you might find this tool more comfortable to work with.
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@ The following screenshot shows a mix of syslog and web access log
|
|||||||
files. Failed requests are shown in red. Identifiers, like IP
|
files. Failed requests are shown in red. Identifiers, like IP
|
||||||
address and PIDs are semantically highlighted.
|
address and PIDs are semantically highlighted.
|
||||||
|
|
||||||
]8;;docs/assets/images/lnav-front-page.png\[4m🖼 Screenshot[1][0m]8;;\[4m[2][0m
|
]8;;docs/assets/images/lnav-front-page.png\[4m🖼 Screenshot[0m]8;;\]8;;docs/assets/images/lnav-front-page.png\[4m¹[0m]8;;\˒²
|
||||||
|
|
||||||
[34m▌[0m[1] - file://{top_srcdir}/docs/assets/images/lnav-front-page.png
|
[34m▌[0m[1] - file://{top_srcdir}/docs/assets/images/lnav-front-page.png
|
||||||
[34m▌[0m[2] - file://{top_srcdir}/docs/assets/images/lnav-front-page.png
|
[34m▌[0m[2] - file://{top_srcdir}/docs/assets/images/lnav-front-page.png
|
||||||
@ -26,21 +26,21 @@ You can SSH into a demo node to play with lnav before installing.
|
|||||||
The [35m"playground"[0m account starts lnav with a couple of log files as an
|
The [35m"playground"[0m account starts lnav with a couple of log files as an
|
||||||
example:
|
example:
|
||||||
|
|
||||||
]8;;ssh://playground@demo.lnav.org\[4m[37m[40m $ ssh playground@demo.lnav.org [0m]8;;\[4m[1][0m
|
]8;;ssh://playground@demo.lnav.org\[4m[37m[40m $ ssh playground@demo.lnav.org [0m]8;;\¹
|
||||||
|
|
||||||
[34m▌[0m[1] - ssh://playground@demo.lnav.org
|
[34m▌[0m[1] - ssh://playground@demo.lnav.org
|
||||||
|
|
||||||
The [35m"tutorial 1"[0m account is an interactive tutorial that can teach you
|
The [35m"tutorial 1"[0m account is an interactive tutorial that can teach you
|
||||||
the basics of operation:
|
the basics of operation:
|
||||||
|
|
||||||
]8;;ssh://tutorial1@demo.lnav.org\[4m[37m[40m $ ssh tutorial1@demo.lnav.org [0m]8;;\[4m[1][0m
|
]8;;ssh://tutorial1@demo.lnav.org\[4m[37m[40m $ ssh tutorial1@demo.lnav.org [0m]8;;\¹
|
||||||
|
|
||||||
[34m▌[0m[1] - ssh://tutorial1@demo.lnav.org
|
[34m▌[0m[1] - ssh://tutorial1@demo.lnav.org
|
||||||
|
|
||||||
[1mInstallation[0m
|
[1mInstallation[0m
|
||||||
|
|
||||||
]8;;https://github.com/tstack/lnav/releases/latest#release-artifacts\[4mDownload a statically-linked binary for Linux/MacOS from the release[0m]8;;\
|
]8;;https://github.com/tstack/lnav/releases/latest#release-artifacts\[4mDownload a statically-linked binary for Linux/MacOS from the release[0m]8;;\
|
||||||
]8;;https://github.com/tstack/lnav/releases/latest#release-artifacts\[4mpage[0m]8;;\[4m[1][0m
|
]8;;https://github.com/tstack/lnav/releases/latest#release-artifacts\[4mpage[0m]8;;\¹
|
||||||
|
|
||||||
[34m▌[0m[1] - https://github.com/tstack/lnav/releases/latest#release-artifacts
|
[34m▌[0m[1] - https://github.com/tstack/lnav/releases/latest#release-artifacts
|
||||||
|
|
||||||
@ -61,7 +61,7 @@ indexing has finished, the LOG view will display the log messages that
|
|||||||
were recognized[^1]. You can then use the usual hotkeys to move around
|
were recognized[^1]. You can then use the usual hotkeys to move around
|
||||||
the view (arrow keys or [37m[40m j [0m/[37m[40m k [0m/[37m[40m h [0m/[37m[40m l [0m to move down/up/left/right).
|
the view (arrow keys or [37m[40m j [0m/[37m[40m k [0m/[37m[40m h [0m/[37m[40m l [0m to move down/up/left/right).
|
||||||
|
|
||||||
See the ]8;;https://docs.lnav.org/en/latest/usage.html\[4mUsage section[0m]8;;\[4m[1][0m of the online documentation for more
|
See the ]8;;https://docs.lnav.org/en/latest/usage.html\[4mUsage section[0m]8;;\¹ of the online documentation for more
|
||||||
information.
|
information.
|
||||||
|
|
||||||
[34m▌[0m[1] - https://docs.lnav.org/en/latest/usage.html
|
[34m▌[0m[1] - https://docs.lnav.org/en/latest/usage.html
|
||||||
@ -116,9 +116,9 @@ log lines fed into [37m[40m lnav [0m via [37m[40m journalctl [0m's [37m[
|
|||||||
Please file issues on this repository or use the discussions section.
|
Please file issues on this repository or use the discussions section.
|
||||||
The following alternatives are also available:
|
The following alternatives are also available:
|
||||||
|
|
||||||
[33m•[0m ]8;;mailto:support@lnav.org\[4msupport@lnav.org[0m]8;;\[4m[1][0m
|
[33m•[0m ]8;;mailto:support@lnav.org\[4msupport@lnav.org[0m]8;;\¹
|
||||||
[33m•[0m ]8;;https://discord.gg/erBPnKwz7R\[4mDiscord[0m]8;;\[4m[2][0m
|
[33m•[0m ]8;;https://discord.gg/erBPnKwz7R\[4mDiscord[0m]8;;\²
|
||||||
[33m•[0m ]8;;https://groups.google.com/g/lnav\[4mGoogle Groups[0m]8;;\[4m[3][0m
|
[33m•[0m ]8;;https://groups.google.com/g/lnav\[4mGoogle Groups[0m]8;;\³
|
||||||
|
|
||||||
[34m▌[0m[1] - mailto:support@lnav.org
|
[34m▌[0m[1] - mailto:support@lnav.org
|
||||||
[34m▌[0m[2] - https://discord.gg/erBPnKwz7R
|
[34m▌[0m[2] - https://discord.gg/erBPnKwz7R
|
||||||
@ -126,9 +126,9 @@ The following alternatives are also available:
|
|||||||
|
|
||||||
[1mLinks[0m
|
[1mLinks[0m
|
||||||
|
|
||||||
[33m•[0m ]8;;https://lnav.org\[4mMain Site[0m]8;;\[4m[1][0m
|
[33m•[0m ]8;;https://lnav.org\[4mMain Site[0m]8;;\¹
|
||||||
[33m•[0m ]8;;https://docs.lnav.org\[1m[4mDocumentation[0m]8;;\[4m[2][0m on Read the Docs
|
[33m•[0m ]8;;https://docs.lnav.org\[1m[4mDocumentation[0m]8;;\² on Read the Docs
|
||||||
[33m•[0m ]8;;ARCHITECTURE.md\[4mInternal Architecture[0m]8;;\[4m[3][0m
|
[33m•[0m ]8;;ARCHITECTURE.md\[4mInternal Architecture[0m]8;;\³
|
||||||
|
|
||||||
[34m▌[0m[1] - https://lnav.org
|
[34m▌[0m[1] - https://lnav.org
|
||||||
[34m▌[0m[2] - https://docs.lnav.org
|
[34m▌[0m[2] - https://docs.lnav.org
|
||||||
@ -136,7 +136,7 @@ The following alternatives are also available:
|
|||||||
|
|
||||||
[1mContributing[0m
|
[1mContributing[0m
|
||||||
|
|
||||||
[33m•[0m ]8;;https://github.com/sponsors/tstack\[4mBecome a Sponsor on GitHub[0m]8;;\[4m[1][0m
|
[33m•[0m ]8;;https://github.com/sponsors/tstack\[4mBecome a Sponsor on GitHub[0m]8;;\¹
|
||||||
|
|
||||||
[34m▌[0m[1] - https://github.com/sponsors/tstack
|
[34m▌[0m[1] - https://github.com/sponsors/tstack
|
||||||
|
|
||||||
@ -177,7 +177,7 @@ Run [37m[40m ./autogen.sh [0m if compiling from a cloned repository.
|
|||||||
|
|
||||||
[1mSee Also[0m
|
[1mSee Also[0m
|
||||||
|
|
||||||
]8;;https://github.com/rcoh/angle-grinder\[4mAngle-grinder[0m]8;;\[4m[1][0m is a tool to slice and dice log files on the
|
]8;;https://github.com/rcoh/angle-grinder\[4mAngle-grinder[0m]8;;\¹ is a tool to slice and dice log files on the
|
||||||
command-line. If you're familiar with the SumoLogic query language,
|
command-line. If you're familiar with the SumoLogic query language,
|
||||||
you might find this tool more comfortable to work with.
|
you might find this tool more comfortable to work with.
|
||||||
|
|
||||||
|
@ -1,13 +1,18 @@
|
|||||||
|
|
||||||
|
[1m[35mTable of Contents[0m
|
||||||
|
|
||||||
|
[33m•[0m ]8;;#test\[4mTest[0m]8;;\
|
||||||
|
[33m•[0m ]8;;#github-alerts\[4mGithub Alerts[0m]8;;\
|
||||||
|
|
||||||
[1mTest[0m
|
[1mTest[0m
|
||||||
|
|
||||||
[33m•[0m One
|
[33m•[0m One
|
||||||
[33m•[0m Two
|
[33m•[0m Two
|
||||||
[33m•[0m Three
|
[33m•[0m Three
|
||||||
|
|
||||||
🖼 ]8;;file://{top_srcdir}/docs/lnav-tui.png\lnav-tui.png]8;;\[1]
|
🖼 ]8;;file://{top_srcdir}/docs/lnav-tui.png\lnav-tui.png]8;;\¹
|
||||||
|
|
||||||
🖼 ]8;;file://{top_srcdir}/docs/lnav-architecture.png\The internal architecture of lnav]8;;\[2]
|
🖼 ]8;;file://{top_srcdir}/docs/lnav-architecture.png\The internal architecture of lnav]8;;\²
|
||||||
|
|
||||||
[34m▌[0m[1] - file://{top_srcdir}/docs/lnav-tui.png
|
[34m▌[0m[1] - file://{top_srcdir}/docs/lnav-tui.png
|
||||||
[34m▌[0m[2] - file://{top_srcdir}/docs/lnav-architecture.png
|
[34m▌[0m[2] - file://{top_srcdir}/docs/lnav-architecture.png
|
||||||
@ -50,7 +55,9 @@ Goodbye, [36m▌[0mWorld[32m╏[0m!
|
|||||||
▌[37m[40m </book> [0m
|
▌[37m[40m </book> [0m
|
||||||
▌[37m[40m</books> [0m
|
▌[37m[40m</books> [0m
|
||||||
|
|
||||||
[34m▌[0m[34mⓘ Note[0m
|
[1mGithub Alerts[0m
|
||||||
|
|
||||||
|
[34m▌[0m[34mⓘ Note[0m
|
||||||
[34m▌[0mUseful information that users should know, even when
|
[34m▌[0mUseful information that users should know, even when
|
||||||
[34m▌[0mskimming content.
|
[34m▌[0mskimming content.
|
||||||
|
|
||||||
@ -60,7 +67,7 @@ Goodbye, [36m▌[0mWorld[32m╏[0m!
|
|||||||
[1m[35m▌[0m[1m[35m🌟 Important[0m
|
[1m[35m▌[0m[1m[35m🌟 Important[0m
|
||||||
[1m[35m▌[0mKey information users need to know to achieve their goal.
|
[1m[35m▌[0mKey information users need to know to achieve their goal.
|
||||||
|
|
||||||
[33m▌[0m[33m⚠️ Warning[0m
|
[33m▌[0m[33m⚠️ Warning[0m
|
||||||
[33m▌[0mUrgent info that needs immediate user attention to avoid
|
[33m▌[0mUrgent info that needs immediate user attention to avoid
|
||||||
[33m▌[0mproblems.
|
[33m▌[0mproblems.
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@ The following screenshot shows a mix of syslog and web access log
|
|||||||
files. Failed requests are shown in red. Identifiers, like IP
|
files. Failed requests are shown in red. Identifiers, like IP
|
||||||
address and PIDs are semantically highlighted.
|
address and PIDs are semantically highlighted.
|
||||||
|
|
||||||
]8;;docs/assets/images/lnav-front-page.png\[4m🖼 Screenshot[1][0m]8;;\[4m[2][0m
|
]8;;docs/assets/images/lnav-front-page.png\[4m🖼 Screenshot[0m]8;;\]8;;docs/assets/images/lnav-front-page.png\[4m¹[0m]8;;\˒²
|
||||||
|
|
||||||
[34m▌[0m[1] - file://{top_srcdir}/docs/assets/images/lnav-front-page.png
|
[34m▌[0m[1] - file://{top_srcdir}/docs/assets/images/lnav-front-page.png
|
||||||
[34m▌[0m[2] - file://{top_srcdir}/docs/assets/images/lnav-front-page.png
|
[34m▌[0m[2] - file://{top_srcdir}/docs/assets/images/lnav-front-page.png
|
||||||
@ -26,21 +26,21 @@ You can SSH into a demo node to play with lnav before installing.
|
|||||||
The [35m"playground"[0m account starts lnav with a couple of log files as an
|
The [35m"playground"[0m account starts lnav with a couple of log files as an
|
||||||
example:
|
example:
|
||||||
|
|
||||||
]8;;ssh://playground@demo.lnav.org\[4m[37m[40m $ ssh playground@demo.lnav.org [0m]8;;\[4m[1][0m
|
]8;;ssh://playground@demo.lnav.org\[4m[37m[40m $ ssh playground@demo.lnav.org [0m]8;;\¹
|
||||||
|
|
||||||
[34m▌[0m[1] - ssh://playground@demo.lnav.org
|
[34m▌[0m[1] - ssh://playground@demo.lnav.org
|
||||||
|
|
||||||
The [35m"tutorial 1"[0m account is an interactive tutorial that can teach you
|
The [35m"tutorial 1"[0m account is an interactive tutorial that can teach you
|
||||||
the basics of operation:
|
the basics of operation:
|
||||||
|
|
||||||
]8;;ssh://tutorial1@demo.lnav.org\[4m[37m[40m $ ssh tutorial1@demo.lnav.org [0m]8;;\[4m[1][0m
|
]8;;ssh://tutorial1@demo.lnav.org\[4m[37m[40m $ ssh tutorial1@demo.lnav.org [0m]8;;\¹
|
||||||
|
|
||||||
[34m▌[0m[1] - ssh://tutorial1@demo.lnav.org
|
[34m▌[0m[1] - ssh://tutorial1@demo.lnav.org
|
||||||
|
|
||||||
[1mInstallation[0m
|
[1mInstallation[0m
|
||||||
|
|
||||||
]8;;https://github.com/tstack/lnav/releases/latest#release-artifacts\[4mDownload a statically-linked binary for Linux/MacOS from the release[0m]8;;\
|
]8;;https://github.com/tstack/lnav/releases/latest#release-artifacts\[4mDownload a statically-linked binary for Linux/MacOS from the release[0m]8;;\
|
||||||
]8;;https://github.com/tstack/lnav/releases/latest#release-artifacts\[4mpage[0m]8;;\[4m[1][0m
|
]8;;https://github.com/tstack/lnav/releases/latest#release-artifacts\[4mpage[0m]8;;\¹
|
||||||
|
|
||||||
[34m▌[0m[1] - https://github.com/tstack/lnav/releases/latest#release-artifacts
|
[34m▌[0m[1] - https://github.com/tstack/lnav/releases/latest#release-artifacts
|
||||||
|
|
||||||
@ -61,7 +61,7 @@ indexing has finished, the LOG view will display the log messages that
|
|||||||
were recognized[^1]. You can then use the usual hotkeys to move around
|
were recognized[^1]. You can then use the usual hotkeys to move around
|
||||||
the view (arrow keys or [37m[40m j [0m/[37m[40m k [0m/[37m[40m h [0m/[37m[40m l [0m to move down/up/left/right).
|
the view (arrow keys or [37m[40m j [0m/[37m[40m k [0m/[37m[40m h [0m/[37m[40m l [0m to move down/up/left/right).
|
||||||
|
|
||||||
See the ]8;;https://docs.lnav.org/en/latest/usage.html\[4mUsage section[0m]8;;\[4m[1][0m of the online documentation for more
|
See the ]8;;https://docs.lnav.org/en/latest/usage.html\[4mUsage section[0m]8;;\¹ of the online documentation for more
|
||||||
information.
|
information.
|
||||||
|
|
||||||
[34m▌[0m[1] - https://docs.lnav.org/en/latest/usage.html
|
[34m▌[0m[1] - https://docs.lnav.org/en/latest/usage.html
|
||||||
@ -116,9 +116,9 @@ log lines fed into [37m[40m lnav [0m via [37m[40m journalctl [0m's [37m[
|
|||||||
Please file issues on this repository or use the discussions section.
|
Please file issues on this repository or use the discussions section.
|
||||||
The following alternatives are also available:
|
The following alternatives are also available:
|
||||||
|
|
||||||
[33m•[0m ]8;;mailto:support@lnav.org\[4msupport@lnav.org[0m]8;;\[4m[1][0m
|
[33m•[0m ]8;;mailto:support@lnav.org\[4msupport@lnav.org[0m]8;;\¹
|
||||||
[33m•[0m ]8;;https://discord.gg/erBPnKwz7R\[4mDiscord[0m]8;;\[4m[2][0m
|
[33m•[0m ]8;;https://discord.gg/erBPnKwz7R\[4mDiscord[0m]8;;\²
|
||||||
[33m•[0m ]8;;https://groups.google.com/g/lnav\[4mGoogle Groups[0m]8;;\[4m[3][0m
|
[33m•[0m ]8;;https://groups.google.com/g/lnav\[4mGoogle Groups[0m]8;;\³
|
||||||
|
|
||||||
[34m▌[0m[1] - mailto:support@lnav.org
|
[34m▌[0m[1] - mailto:support@lnav.org
|
||||||
[34m▌[0m[2] - https://discord.gg/erBPnKwz7R
|
[34m▌[0m[2] - https://discord.gg/erBPnKwz7R
|
||||||
@ -126,9 +126,9 @@ The following alternatives are also available:
|
|||||||
|
|
||||||
[1mLinks[0m
|
[1mLinks[0m
|
||||||
|
|
||||||
[33m•[0m ]8;;https://lnav.org\[4mMain Site[0m]8;;\[4m[1][0m
|
[33m•[0m ]8;;https://lnav.org\[4mMain Site[0m]8;;\¹
|
||||||
[33m•[0m ]8;;https://docs.lnav.org\[1m[4mDocumentation[0m]8;;\[4m[2][0m on Read the Docs
|
[33m•[0m ]8;;https://docs.lnav.org\[1m[4mDocumentation[0m]8;;\² on Read the Docs
|
||||||
[33m•[0m ]8;;ARCHITECTURE.md\[4mInternal Architecture[0m]8;;\[4m[3][0m
|
[33m•[0m ]8;;ARCHITECTURE.md\[4mInternal Architecture[0m]8;;\³
|
||||||
|
|
||||||
[34m▌[0m[1] - https://lnav.org
|
[34m▌[0m[1] - https://lnav.org
|
||||||
[34m▌[0m[2] - https://docs.lnav.org
|
[34m▌[0m[2] - https://docs.lnav.org
|
||||||
@ -136,7 +136,7 @@ The following alternatives are also available:
|
|||||||
|
|
||||||
[1mContributing[0m
|
[1mContributing[0m
|
||||||
|
|
||||||
[33m•[0m ]8;;https://github.com/sponsors/tstack\[4mBecome a Sponsor on GitHub[0m]8;;\[4m[1][0m
|
[33m•[0m ]8;;https://github.com/sponsors/tstack\[4mBecome a Sponsor on GitHub[0m]8;;\¹
|
||||||
|
|
||||||
[34m▌[0m[1] - https://github.com/sponsors/tstack
|
[34m▌[0m[1] - https://github.com/sponsors/tstack
|
||||||
|
|
||||||
@ -177,7 +177,7 @@ Run [37m[40m ./autogen.sh [0m if compiling from a cloned repository.
|
|||||||
|
|
||||||
[1mSee Also[0m
|
[1mSee Also[0m
|
||||||
|
|
||||||
]8;;https://github.com/rcoh/angle-grinder\[4mAngle-grinder[0m]8;;\[4m[1][0m is a tool to slice and dice log files on the
|
]8;;https://github.com/rcoh/angle-grinder\[4mAngle-grinder[0m]8;;\¹ is a tool to slice and dice log files on the
|
||||||
command-line. If you're familiar with the SumoLogic query language,
|
command-line. If you're familiar with the SumoLogic query language,
|
||||||
you might find this tool more comfortable to work with.
|
you might find this tool more comfortable to work with.
|
||||||
|
|
||||||
|
@ -2,6 +2,11 @@
|
|||||||
"comment": "This is JSON front-matter"
|
"comment": "This is JSON front-matter"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Table of Contents
|
||||||
|
|
||||||
|
- [Test](#test)
|
||||||
|
- [Github Alerts](#github-alerts)
|
||||||
|
|
||||||
## Test
|
## Test
|
||||||
|
|
||||||
* One
|
* One
|
||||||
@ -59,6 +64,8 @@ def hw(name):
|
|||||||
</books>
|
</books>
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Github Alerts
|
||||||
|
|
||||||
> [!NOTE]
|
> [!NOTE]
|
||||||
> Useful information that users should know, even when skimming content.
|
> Useful information that users should know, even when skimming content.
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user