summaryrefslogtreecommitdiffstats
path: root/src/base/string_attr_type.hh
diff options
context:
space:
mode:
Diffstat (limited to 'src/base/string_attr_type.hh')
-rw-r--r--src/base/string_attr_type.hh83
1 files changed, 81 insertions, 2 deletions
diff --git a/src/base/string_attr_type.hh b/src/base/string_attr_type.hh
index 5bff345..0b8cd85 100644
--- a/src/base/string_attr_type.hh
+++ b/src/base/string_attr_type.hh
@@ -55,9 +55,11 @@ enum class role_t : int32_t {
VCR_ALT_ROW, /*< Highlight for alternating rows in a list */
VCR_HIDDEN,
VCR_CURSOR_LINE,
+ VCR_DISABLED_CURSOR_LINE,
VCR_ADJUSTED_TIME,
VCR_SKEWED_TIME,
VCR_OFFSET_TIME,
+ VCR_FILE_OFFSET,
VCR_INVALID_MSG,
VCR_STATUS, /*< Normal status line text. */
VCR_WARN_STATUS,
@@ -94,6 +96,9 @@ enum class role_t : int32_t {
VCR_DOC_DIRECTIVE,
VCR_VARIABLE,
VCR_SYMBOL,
+ VCR_NULL,
+ VCR_ASCII_CTRL,
+ VCR_NON_ASCII,
VCR_NUMBER,
VCR_RE_SPECIAL,
VCR_RE_REPEAT,
@@ -125,6 +130,13 @@ enum class role_t : int32_t {
VCR_FOOTNOTE_BORDER,
VCR_FOOTNOTE_TEXT,
VCR_SNIPPET_BORDER,
+ VCR_INDENT_GUIDE,
+ VCR_INLINE_CODE,
+ VCR_FUNCTION,
+ VCR_TYPE,
+ VCR_SEP_REF_ACC,
+ VCR_SUGGESTION,
+ VCR_SELECTED_TEXT,
VCR__MAX
};
@@ -156,6 +168,11 @@ struct text_attrs {
nonstd::optional<short> ta_bg_color;
};
+struct block_elem_t {
+ wchar_t value;
+ role_t role;
+};
+
using string_attr_value = mapbox::util::variant<int64_t,
role_t,
text_attrs,
@@ -164,7 +181,8 @@ using string_attr_value = mapbox::util::variant<int64_t,
std::shared_ptr<logfile>,
bookmark_metadata*,
timespec,
- string_fragment>;
+ string_fragment,
+ block_elem_t>;
class string_attr_type_base {
public:
@@ -211,15 +229,16 @@ extern string_attr_type<void> SA_PREFORMATTED;
extern string_attr_type<std::string> SA_INVALID;
extern string_attr_type<std::string> SA_ERROR;
extern string_attr_type<int64_t> SA_LEVEL;
-extern string_attr_type<string_fragment> SA_ORIGIN;
extern string_attr_type<int64_t> SA_ORIGIN_OFFSET;
extern string_attr_type<role_t> VC_ROLE;
extern string_attr_type<role_t> VC_ROLE_FG;
extern string_attr_type<text_attrs> VC_STYLE;
extern string_attr_type<int64_t> VC_GRAPHIC;
+extern string_attr_type<block_elem_t> VC_BLOCK_ELEM;
extern string_attr_type<int64_t> VC_FOREGROUND;
extern string_attr_type<int64_t> VC_BACKGROUND;
+extern string_attr_type<std::string> VC_HYPERLINK;
namespace lnav {
@@ -233,6 +252,14 @@ preformatted(S str)
return std::make_pair(std::move(str), SA_PREFORMATTED.template value());
}
+template<typename S>
+inline std::pair<S, string_attr_pair>
+href(S str, std::string href)
+{
+ return std::make_pair(std::move(str),
+ VC_HYPERLINK.template value(std::move(href)));
+}
+
} // namespace attrs
} // namespace string
@@ -288,6 +315,14 @@ ok(S str)
template<typename S>
inline std::pair<S, string_attr_pair>
+hidden(S str)
+{
+ return std::make_pair(std::move(str),
+ VC_ROLE.template value(role_t::VCR_HIDDEN));
+}
+
+template<typename S>
+inline std::pair<S, string_attr_pair>
file(S str)
{
return std::make_pair(std::move(str),
@@ -344,6 +379,14 @@ identifier(S str)
template<typename S>
inline std::pair<S, string_attr_pair>
+string(S str)
+{
+ return std::make_pair(std::move(str),
+ VC_ROLE.template value(role_t::VCR_STRING));
+}
+
+template<typename S>
+inline std::pair<S, string_attr_pair>
hr(S str)
{
return std::make_pair(std::move(str),
@@ -494,6 +537,14 @@ h6(S str)
VC_ROLE.template value(role_t::VCR_H6));
}
+template<typename S>
+inline std::pair<S, string_attr_pair>
+suggestion(S str)
+{
+ return std::make_pair(std::move(str),
+ VC_ROLE.template value(role_t::VCR_SUGGESTION));
+}
+
namespace literals {
inline std::pair<std::string, string_attr_pair> operator"" _ok(const char* str,
@@ -510,6 +561,13 @@ inline std::pair<std::string, string_attr_pair> operator"" _error(
VC_ROLE.template value(role_t::VCR_ERROR));
}
+inline std::pair<std::string, string_attr_pair> operator"" _warning(
+ const char* str, std::size_t len)
+{
+ return std::make_pair(std::string(str, len),
+ VC_ROLE.template value(role_t::VCR_WARNING));
+}
+
inline std::pair<std::string, string_attr_pair> operator"" _info(
const char* str, std::size_t len)
{
@@ -517,6 +575,13 @@ inline std::pair<std::string, string_attr_pair> operator"" _info(
VC_ROLE.template value(role_t::VCR_INFO));
}
+inline std::pair<std::string, string_attr_pair> operator"" _status_title(
+ const char* str, std::size_t len)
+{
+ return std::make_pair(std::string(str, len),
+ VC_ROLE.template value(role_t::VCR_STATUS_TITLE));
+}
+
inline std::pair<std::string, string_attr_pair> operator"" _symbol(
const char* str, std::size_t len)
{
@@ -629,6 +694,13 @@ inline std::pair<std::string, string_attr_pair> operator"" _code_border(
VC_ROLE.template value(role_t::VCR_CODE_BORDER));
}
+inline std::pair<std::string, string_attr_pair> operator"" _table_header(
+ const char* str, std::size_t len)
+{
+ return std::make_pair(std::string(str, len),
+ VC_ROLE.template value(role_t::VCR_TABLE_HEADER));
+}
+
inline std::pair<std::string, string_attr_pair> operator"" _table_border(
const char* str, std::size_t len)
{
@@ -671,6 +743,13 @@ inline std::pair<std::string, string_attr_pair> operator"" _snippet_border(
VC_ROLE.template value(role_t::VCR_SNIPPET_BORDER));
}
+inline std::pair<std::string, string_attr_pair> operator"" _link(
+ const char* str, std::size_t len)
+{
+ return std::make_pair(std::string(str, len),
+ VC_HYPERLINK.template value(std::string(str, len)));
+}
+
} // namespace literals
} // namespace roles