diff --git a/src/buffer/Buffer.zig b/src/buffer/Buffer.zig index 722e4d9..d6d102b 100644 --- a/src/buffer/Buffer.zig +++ b/src/buffer/Buffer.zig @@ -538,7 +538,7 @@ const Node = union(enum) { const ctx = @as(*@This(), @ptrCast(@alignCast(ctx_))); ctx.at = egc; ctx.wcwidth = wcwidth; - if (ctx.col == 0 or egc[0] == '\n' or ctx.col < wcwidth) + if (wcwidth > 0 and (ctx.col == 0 or egc[0] == '\n' or ctx.col < wcwidth)) return Walker.stop; ctx.col -= wcwidth; return Walker.keep_walking; diff --git a/src/keybind/builtin/flow.json b/src/keybind/builtin/flow.json index 30ddc9c..ca9a7c4 100644 --- a/src/keybind/builtin/flow.json +++ b/src/keybind/builtin/flow.json @@ -225,6 +225,7 @@ "select": { "name": "SELECT", "inherit": "normal", + "cursor": "block", "press": [ ["left", "select_left"], ["right", "select_right"], diff --git a/src/tui/tui.zig b/src/tui/tui.zig index a08e55c..0577836 100644 --- a/src/tui/tui.zig +++ b/src/tui/tui.zig @@ -1455,7 +1455,8 @@ fn set_terminal_style(self: *Self) void { pub fn get_cursor_shape() renderer.CursorShape { const self = current(); - const shape = if (self.input_mode_) |mode| mode.cursor_shape orelse self.default_cursor else self.default_cursor; + const shape_ = if (self.input_mode_) |mode| mode.cursor_shape orelse self.default_cursor else self.default_cursor; + const shape = if (self.rdr_.vx.caps.multi_cursor and shape_ == .default) .beam_blink else shape_; return switch (shape) { .default => .default, .block_blink => .block_blink,