fix: render control codes in mini buffer input with unicode control code symbols
closes #236
This commit is contained in:
parent
993add1a43
commit
e39d9ed4b3
7 changed files with 24 additions and 8 deletions
|
@ -202,6 +202,21 @@ pub fn putstr(self: *Plane, text: []const u8) !usize {
|
|||
return result;
|
||||
}
|
||||
|
||||
pub fn putstr_unicode(self: *Plane, text: []const u8) !usize {
|
||||
var result: usize = 0;
|
||||
var iter = self.window.screen.unicode.graphemeIterator(text);
|
||||
while (iter.next()) |grapheme| {
|
||||
const s_ = grapheme.bytes(text);
|
||||
const s = switch (s_[0]) {
|
||||
0...31 => |code| Buffer.unicode.control_code_to_unicode(code),
|
||||
else => s_,
|
||||
};
|
||||
self.write_cell(@intCast(self.col), @intCast(self.row), s);
|
||||
result += 1;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
pub fn putc(self: *Plane, cell: *const Cell) !usize {
|
||||
return self.putc_yx(@intCast(self.row), @intCast(self.col), cell);
|
||||
}
|
||||
|
|
|
@ -60,7 +60,7 @@ pub fn Create(options: type) type {
|
|||
fn update_mini_mode_text(self: *Self) void {
|
||||
if (tui.mini_mode()) |mini_mode| {
|
||||
mini_mode.text = self.input.items;
|
||||
mini_mode.cursor = tui.egc_chunk_width(self.input.items, 0, 8);
|
||||
mini_mode.cursor = tui.egc_chunk_width(self.input.items, 0, 1);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -115,7 +115,7 @@ pub fn Create(options: type) type {
|
|||
}
|
||||
if (tui.mini_mode()) |mini_mode| {
|
||||
mini_mode.text = self.file_path.items;
|
||||
mini_mode.cursor = tui.egc_chunk_width(self.file_path.items, 0, 8);
|
||||
mini_mode.cursor = tui.egc_chunk_width(self.file_path.items, 0, 1);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
@ -139,7 +139,7 @@ pub fn Create(options: type) type {
|
|||
defer {
|
||||
if (tui.mini_mode()) |mini_mode| {
|
||||
mini_mode.text = self.file_path.items;
|
||||
mini_mode.cursor = tui.egc_chunk_width(self.file_path.items, 0, 8);
|
||||
mini_mode.cursor = tui.egc_chunk_width(self.file_path.items, 0, 1);
|
||||
}
|
||||
}
|
||||
var count: usize = undefined;
|
||||
|
@ -243,7 +243,7 @@ pub fn Create(options: type) type {
|
|||
fn update_mini_mode_text(self: *Self) void {
|
||||
if (tui.mini_mode()) |mini_mode| {
|
||||
mini_mode.text = self.file_path.items;
|
||||
mini_mode.cursor = tui.egc_chunk_width(self.file_path.items, 0, 8);
|
||||
mini_mode.cursor = tui.egc_chunk_width(self.file_path.items, 0, 1);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -142,7 +142,7 @@ fn load_history(self: *Self, pos: usize) void {
|
|||
fn update_mini_mode_text(self: *Self) void {
|
||||
if (tui.mini_mode()) |mini_mode| {
|
||||
mini_mode.text = self.input_.items;
|
||||
mini_mode.cursor = tui.egc_chunk_width(self.input_.items, 0, 8);
|
||||
mini_mode.cursor = tui.egc_chunk_width(self.input_.items, 0, 1);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -83,7 +83,7 @@ fn start_query(self: *Self) !void {
|
|||
fn update_mini_mode_text(self: *Self) void {
|
||||
if (tui.mini_mode()) |mini_mode| {
|
||||
mini_mode.text = self.input_;
|
||||
mini_mode.cursor = tui.egc_chunk_width(self.input_, 0, 8);
|
||||
mini_mode.cursor = tui.egc_chunk_width(self.input_, 0, 1);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -54,7 +54,7 @@ fn update_mini_mode_text(self: *Self) void {
|
|||
(fmt.bufPrint(&self.buf, "{d}", .{linenum}) catch "")
|
||||
else
|
||||
"";
|
||||
mini_mode.cursor = tui.egc_chunk_width(mini_mode.text, 0, 8);
|
||||
mini_mode.cursor = tui.egc_chunk_width(mini_mode.text, 0, 1);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -104,7 +104,8 @@ pub fn render(self: *Self, btn: *Button.State(Self), theme: *const Widget.Theme)
|
|||
fn render_mini_mode(plane: *Plane, theme: *const Widget.Theme) void {
|
||||
plane.off_styles(styles.italic);
|
||||
const mini_mode = tui.mini_mode() orelse return;
|
||||
_ = plane.print(" {s}", .{mini_mode.text}) catch {};
|
||||
_ = plane.putstr_unicode(" ") catch {};
|
||||
_ = plane.putstr_unicode(mini_mode.text) catch {};
|
||||
if (mini_mode.cursor) |cursor| {
|
||||
const pos: c_int = @intCast(cursor);
|
||||
if (tui.config().enable_terminal_cursor) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue