summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJason Felice <jason.m.felice@gmail.com>2020-11-02 14:55:15 -0500
committerMaxime Coste <mawww@kakoune.org>2021-07-12 10:25:59 +1000
commit5d497dc46e7986f2f215a6d96f62c929dccc83c2 (patch)
treeb75c123dba41cbc63ce5b144f1757970e892eed7 /src
parentcbd0dc571bba77d80a5fea1709cc3fbd8bd039f9 (diff)
src: Support strikethrough faces
Diffstat (limited to 'src')
-rw-r--r--src/face.hh23
-rw-r--r--src/face_registry.cc1
-rw-r--r--src/json_ui.cc1
-rw-r--r--src/terminal_ui.cc4
4 files changed, 16 insertions, 13 deletions
diff --git a/src/face.hh b/src/face.hh
index ecb31dc3..798cd3f3 100644
--- a/src/face.hh
+++ b/src/face.hh
@@ -9,17 +9,18 @@ namespace Kakoune
enum class Attribute : int
{
- Normal = 0,
- Underline = 1 << 1,
- Reverse = 1 << 2,
- Blink = 1 << 3,
- Bold = 1 << 4,
- Dim = 1 << 5,
- Italic = 1 << 6,
- FinalFg = 1 << 7,
- FinalBg = 1 << 8,
- FinalAttr = 1 << 9,
- Final = FinalFg | FinalBg | FinalAttr
+ Normal = 0,
+ Underline = 1 << 1,
+ Reverse = 1 << 2,
+ Blink = 1 << 3,
+ Bold = 1 << 4,
+ Dim = 1 << 5,
+ Italic = 1 << 6,
+ Strikethrough = 1 << 7,
+ FinalFg = 1 << 8,
+ FinalBg = 1 << 9,
+ FinalAttr = 1 << 10,
+ Final = FinalFg | FinalBg | FinalAttr
};
constexpr bool with_bit_ops(Meta::Type<Attribute>) { return true; }
diff --git a/src/face_registry.cc b/src/face_registry.cc
index 9a70f936..8bf43bcb 100644
--- a/src/face_registry.cc
+++ b/src/face_registry.cc
@@ -43,6 +43,7 @@ static FaceRegistry::FaceSpec parse_face(StringView facedesc)
case 'B': face.attributes |= Attribute::Blink; break;
case 'd': face.attributes |= Attribute::Dim; break;
case 'i': face.attributes |= Attribute::Italic; break;
+ case 's': face.attributes |= Attribute::Strikethrough; break;
case 'f': face.attributes |= Attribute::FinalFg; break;
case 'g': face.attributes |= Attribute::FinalBg; break;
case 'a': face.attributes |= Attribute::FinalAttr; break;
diff --git a/src/json_ui.cc b/src/json_ui.cc
index 111438c4..36c547ef 100644
--- a/src/json_ui.cc
+++ b/src/json_ui.cc
@@ -46,6 +46,7 @@ String to_json(Attribute attributes)
{ Attribute::FinalFg, "final_fg" },
{ Attribute::FinalBg, "final_bg" },
{ Attribute::FinalAttr, "final_attr" },
+ { Attribute::Strikethrough, "strikethrough" },
};
return "[" + join(attrs |
diff --git a/src/terminal_ui.cc b/src/terminal_ui.cc
index 34d8eee3..8767079b 100644
--- a/src/terminal_ui.cc
+++ b/src/terminal_ui.cc
@@ -183,7 +183,7 @@ void TerminalUI::Screen::set_face(const Face& face)
{
static constexpr int fg_table[]{ 39, 30, 31, 32, 33, 34, 35, 36, 37, 90, 91, 92, 93, 94, 95, 96, 97 };
static constexpr int bg_table[]{ 49, 40, 41, 42, 43, 44, 45, 46, 47, 100, 101, 102, 103, 104, 105, 106, 107 };
- static constexpr int attr_table[]{ 0, 4, 7, 5, 1, 2, 3 };
+ static constexpr int attr_table[]{ 0, 4, 7, 5, 1, 2, 3, 9 };
auto set_color = [](bool fg, const Color& color, bool join) {
if (join)
@@ -201,7 +201,7 @@ void TerminalUI::Screen::set_face(const Face& face)
bool join = false;
if (face.attributes != m_active_face.attributes)
{
- for (int i = 0; i < sizeof(attr_table) / sizeof(int); ++i)
+ for (int i = 0; i < std::size(attr_table); ++i)
{
if (face.attributes & (Attribute)(1 << i))
printf(";%d", attr_table[i]);