Skip to content

Commit

Permalink
Allow three combining chars per cell
Browse files Browse the repository at this point in the history
Makes use of otherwise wasted padding in the CPUCell struct
  • Loading branch information
kovidgoyal committed Apr 28, 2022
1 parent 1a2d9c6 commit 2b3be14
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 3 deletions.
5 changes: 4 additions & 1 deletion kitty/data-types.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@

#define PY_SSIZE_T_CLEAN
#include <Python.h>
#include <assert.h>
#include <stdint.h>
#include <stdbool.h>
#include <poll.h>
Expand Down Expand Up @@ -163,12 +164,14 @@ typedef struct {
sprite_index sprite_x, sprite_y, sprite_z;
CellAttrs attrs;
} GPUCell;
static_assert(sizeof(GPUCell) == 20, "Fix the ordering of GPUCell");

typedef struct {
char_type ch;
combining_type cc_idx[2];
hyperlink_id_type hyperlink_id;
combining_type cc_idx[3];
} CPUCell;
static_assert(sizeof(CPUCell) == 12, "Fix the ordering of CPUCell");

typedef enum { UNKNOWN_PROMPT_KIND = 0, PROMPT_START = 1, SECONDARY_PROMPT = 2, OUTPUT_START = 3 } PromptKind;
typedef union LineAttrs {
Expand Down
6 changes: 4 additions & 2 deletions kitty_tests/datatypes.py
Original file line number Diff line number Diff line change
Expand Up @@ -182,9 +182,11 @@ def test_line(self):
l0.add_combining_char(0, '\U000e0100')
self.ae(l0[0], ' \u0300\U000e0100')
l0.add_combining_char(0, '\u0302')
self.ae(l0[0], ' \u0300\u0302')
self.ae(l0[0], ' \u0300\U000e0100\u0302')
l0.add_combining_char(0, '\u0301')
self.ae(l0[0], ' \u0300\U000e0100\u0301')
self.ae(l0[1], '\0')
self.ae(str(l0), ' \u0300\u0302')
self.ae(str(l0), ' \u0300\U000e0100\u0301')
t = 'Testing with simple text'
lb = LineBuf(2, len(t))
l0 = lb.line(0)
Expand Down

0 comments on commit 2b3be14

Please sign in to comment.