diff options
Diffstat (limited to 'src/base/string_attr_type.hh')
-rw-r--r-- | src/base/string_attr_type.hh | 83 |
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 |