diff --git a/lua/tirenvi/core/tir_vim.lua b/lua/tirenvi/core/tir_vim.lua index b42b26f..1e9c0b5 100644 --- a/lua/tirenvi/core/tir_vim.lua +++ b/lua/tirenvi/core/tir_vim.lua @@ -84,7 +84,7 @@ end ---@param line string ---@return integer[] -function M.get_pipe_byte_position(line) +local function get_pipe_byte_position(line) local indexes = {} local index = 1 while index <= #line do @@ -140,11 +140,6 @@ function M.get_block_bottom_nrow(lines, irow) return find_block_edge(lines, irow, 1) end ----@param count integer ----@return Range|nil -function M.get_block_range(count) -end - ---@param line string ---@return string[] function M.get_cells(line) @@ -162,13 +157,14 @@ end ---@param lines string[] ---@param count integer ---@param is_around boolean +---@param allow_plain boolean ---@return Range|nil -function M.get_select(lines, count, is_around) +function M.get_block_range(lines, count, is_around, allow_plain) -- local mode = vim.fn.mode() local irow, icol0 = unpack(vim.api.nvim_win_get_cursor(0)) local icol = icol0 + 1 local cline = vim.api.nvim_get_current_line() - local cbyte_pos = M.get_pipe_byte_position(cline) + local cbyte_pos = get_pipe_byte_position(cline) if #cbyte_pos == 0 then return nil end @@ -176,15 +172,24 @@ function M.get_select(lines, count, is_around) if not colIndex then return nil end - local trow = M.get_block_top_nrow(lines, irow) - local brow = M.get_block_bottom_nrow(lines, irow) - local tbyte_pos = M.get_pipe_byte_position(lines[trow]) - local bbyte_pos = M.get_pipe_byte_position(lines[brow]) + local trow + local brow + if allow_plain then + trow = M.get_block_top_nrow(lines, irow) + brow = M.get_block_bottom_nrow(lines, irow) + else + trow = 1 + brow = #lines + end + local tbyte_pos = get_pipe_byte_position(lines[trow]) + local bbyte_pos = get_pipe_byte_position(lines[brow]) + local end_index = colIndex + count + end_index = math.min(end_index, #bbyte_pos) return { start_row = trow, end_row = brow, start_col = tbyte_pos[colIndex] + (is_around and 0 or plen), - end_col = bbyte_pos[colIndex + 1] - 1 + end_col = bbyte_pos[end_index] - 1 } end diff --git a/lua/tirenvi/editor/motion.lua b/lua/tirenvi/editor/motion.lua index 7136ffb..75e8ce6 100644 --- a/lua/tirenvi/editor/motion.lua +++ b/lua/tirenvi/editor/motion.lua @@ -1,6 +1,7 @@ local config = require("tirenvi.config") local buf_state = require("tirenvi.state.buf_state") local tir_vim = require("tirenvi.core.tir_vim") +local util = require("tirenvi.util.util") local M = {} @@ -29,21 +30,33 @@ M.F = build_motion("F") M.t = build_motion("t") M.T = build_motion("T") -function M.g() +function M.block_top() local bufnr = vim.api.nvim_get_current_buf() local cursor = vim.api.nvim_win_get_cursor(0) local row, col = cursor[1], cursor[2] - local lines = vim.api.nvim_buf_get_lines(bufnr, 0, -1, false) - local top = tir_vim.get_block_top_nrow(lines, row) + local top + local parser = util.get_parser(bufnr) + if not parser or not parser.allow_plain then + top = 1 + else + local lines = vim.api.nvim_buf_get_lines(bufnr, 0, -1, false) + top = tir_vim.get_block_top_nrow(lines, row) + end vim.api.nvim_win_set_cursor(0, { top, col }) end -function M.G() +function M.block_bottom() local bufnr = vim.api.nvim_get_current_buf() local cursor = vim.api.nvim_win_get_cursor(0) local row, col = cursor[1], cursor[2] - local lines = vim.api.nvim_buf_get_lines(bufnr, 0, -1, false) - local bottom = tir_vim.get_block_bottom_nrow(lines, row) + local bottom + local parser = util.get_parser(bufnr) + if not parser or not parser.allow_plain then + bottom = vim.api.nvim_buf_line_count(bufnr) + else + local lines = vim.api.nvim_buf_get_lines(bufnr, 0, -1, false) + bottom = tir_vim.get_block_bottom_nrow(lines, row) + end vim.api.nvim_win_set_cursor(0, { bottom, col }) end diff --git a/lua/tirenvi/editor/textobj.lua b/lua/tirenvi/editor/textobj.lua index 00f9b7a..41b6ba1 100644 --- a/lua/tirenvi/editor/textobj.lua +++ b/lua/tirenvi/editor/textobj.lua @@ -1,19 +1,18 @@ local tir_vim = require("tirenvi.core.tir_vim") local buffer = require("tirenvi.state.buffer") local config = require("tirenvi.config") +local util = require("tirenvi.util.util") local log = require("tirenvi.util.log") local M = {} ---@param is_around boolean|nil local function setup_vl(is_around) - if vim.fn.mode() == "n" then - return - end is_around = is_around or false local count = vim.v.count1 local lines = buffer.get_lines(0, 0, -1, false) - local pos = tir_vim.get_select(lines, count, is_around) + local parser = util.get_parser() + local pos = tir_vim.get_block_range(lines, count, is_around, parser.allow_plain) if not pos then return end @@ -31,13 +30,12 @@ function M.setup_val() setup_vl(true) end --- setup -function M.setup(opts) - vim.keymap.set({ "o", "x" }, "i" .. config.textobj.column, M.setup_vil, { +function M.setup() + vim.keymap.set({ "x" }, "i" .. config.textobj.column, M.setup_vil, { desc = "Inner column", }) - vim.keymap.set({ "o", "x" }, "a" .. config.textobj.column, M.setup_val, { + vim.keymap.set({ "x" }, "a" .. config.textobj.column, M.setup_val, { desc = "Around column", }) end diff --git a/lua/tirenvi/init.lua b/lua/tirenvi/init.lua index e92b887..75400ff 100644 --- a/lua/tirenvi/init.lua +++ b/lua/tirenvi/init.lua @@ -60,7 +60,7 @@ function M.setup(opts) config.setup(opts) require("tirenvi.editor.autocmd").setup() require("tirenvi.editor.commands").setup() - require("tirenvi.editor.textobj").setup(config) + require("tirenvi.editor.textobj").setup() require("tirenvi.ui").setup() end diff --git a/lua/tirenvi/util/util.lua b/lua/tirenvi/util/util.lua index 214d20b..fa492bc 100644 --- a/lua/tirenvi/util/util.lua +++ b/lua/tirenvi/util/util.lua @@ -114,9 +114,10 @@ function M.assert_no_reserved_marks(fl_lines) end end ----@param bufnr number +---@param bufnr number|nil ---@return Parser function M.get_parser(bufnr) + bufnr = bufnr or vim.api.nvim_get_current_buf() local parser = get_parser_for_file(bufnr) if parser == nil then error(errors.new_domain_error("")) diff --git a/tests/cases/motion/ftg/run.vim b/tests/cases/motion/ftg/run.vim index 616fe12..293c3a6 100644 --- a/tests/cases/motion/ftg/run.vim +++ b/tests/cases/motion/ftg/run.vim @@ -8,8 +8,8 @@ vim.keymap.set({ 'n', 'o', 'x' }, 'gtf', require('tirenvi').motion.f, { expr = t vim.keymap.set({ 'n', 'o', 'x' }, 'gtF', require('tirenvi').motion.F, { expr = true, desc = '[T]irEnvi: F pipe' }) vim.keymap.set({ 'n', 'o', 'x' }, 'gtt', require('tirenvi').motion.t, { expr = true, desc = '[T]irEnvi: t pipe' }) vim.keymap.set({ 'n', 'o', 'x' }, 'gtT', require('tirenvi').motion.T, { expr = true, desc = '[T]irEnvi: T pipe' }) -vim.keymap.set('n', 'gtg', require('tirenvi').motion.g, { desc = '[T]irEnvi: block top' }) -vim.keymap.set('n', 'gtG', require('tirenvi').motion.G, { desc = '[T]irEnvi: block bottom' }) +vim.keymap.set('n', 'gtg', require('tirenvi').motion.block_top, { desc = '[T]irEnvi: block top' }) +vim.keymap.set('n', 'gtG', require('tirenvi').motion.block_bottom, { desc = '[T]irEnvi: block bottom' }) EOF edit $TIRENVI_ROOT/tests/data/complex.md diff --git a/tests/cases/motion/g-csv/out-expected.txt b/tests/cases/motion/g-csv/out-expected.txt new file mode 100644 index 0000000..2df5d04 --- /dev/null +++ b/tests/cases/motion/g-csv/out-expected.txt @@ -0,0 +1,110 @@ +=== MESSAGE === + +=== DISPLAY === +│A1⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│B22⠀⠀⠀⠀⠀⠀│C333⠀⠀⠀⠀⠀⠀│D4444⠀⠀⠀│E55555⠀⠀⠀│F666666│ +│ ===⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│- next -⠀│ line⠀⠀⠀⠀⠀│ has⠀⠀⠀│ no⠀⠀⠀⠀⠀⠀│ value │ +│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀│ +│x1⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│y22⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀│z333⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀│ +│===⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│ - next -│ line⠀⠀⠀⠀⠀│ has⠀⠀⠀│linefeed⠀│ ⠀⠀⠀⠀⠀│ +│↲"1"2h", 34567890a│abc⠀⠀⠀⠀⠀⠀│DEF123⠀⠀⠀⠀│↲↲↲⠀⠀⠀⠀⠀│gh⠀⠀⠀⠀⠀⠀⠀│9⠀⠀⠀⠀⠀⠀│ +│a⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│b↲⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀│c⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀│ +│ ===⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│- next -⠀│ lines⠀⠀⠀⠀│ has⠀⠀⠀│tab⠀⠀⠀⠀⠀⠀│ ⠀⠀⠀⠀⠀│ +│⇥ l⇥ongtext01⠀⠀⠀⠀⠀│mi⇥⇥d2⠀⠀⠀│s⠀⠀⠀⠀⠀⠀⠀⠀⠀│tt⠀⠀⠀⠀⠀⠀│uuu⠀⠀⠀⠀⠀⠀│vvvv⠀⠀⠀│ +│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│⇥⇥⇥⇥⇥⇥⇥⠀⠀⠀│⇥⇥⇥⇥⇥⇥⇥⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀│ +│R1C1⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│R1C2⠀⠀⠀⠀⠀│R1C3⠀⠀⠀⠀⠀⠀│R1C4⠀⠀⠀⠀│R1C5⠀⠀⠀⠀⠀│R1C6⠀⠀⠀│ +│ ===⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│- next -⠀│ line⠀⠀⠀⠀⠀│ is⠀⠀⠀⠀│multibyte│ value │ +│aaあい⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│いろ2⠀⠀⠀⠀│ぼんさんが│へを⠀⠀⠀⠀│こいた⠀⠀⠀│.!...⠀│ +│g1⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│h22⠀⠀⠀⠀⠀⠀│i333⠀⠀⠀⠀⠀⠀│j4444⠀⠀⠀│k55555⠀⠀⠀│l6⠀⠀⠀⠀⠀│ +│ ===⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│- next -⠀│ lines⠀⠀⠀⠀│ has⠀⠀⠀│linefeed+│tab ⠀⠀│ +│⇥⇥ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│↲⇥⠀⠀⠀⠀⠀⠀⠀│n⇥ ⠀⠀⠀⠀⠀⠀⠀│⇥⇥ o333⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀│ +│pqrst⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│uv⠀⠀⠀⠀⠀⠀⠀│wx1⠀⠀⠀⠀⠀⠀⠀│yz22⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│345⠀⠀⠀⠀│ +│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀│ +│a1b2c3⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│XYZ⠀⠀⠀⠀⠀⠀⠀│7777⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│k9⠀⠀⠀⠀⠀│ +│short⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│longer12⠀│x⠀⠀⠀⠀⠀⠀⠀⠀⠀│yz⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│end⠀⠀⠀⠀│ +│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀│ +│row15a⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│row15b⠀⠀⠀│row15c⠀⠀⠀⠀│row15d⠀⠀│row15e⠀⠀⠀│row15f⠀│ +│1⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│22⠀⠀⠀⠀⠀⠀⠀│333⠀⠀⠀⠀⠀⠀⠀│4444⠀⠀⠀⠀│55555⠀⠀⠀⠀│666666⠀│ +│alpha⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│beta⠀⠀⠀⠀⠀│gamma⠀⠀⠀⠀⠀│delta⠀⠀⠀│epsilon⠀⠀│zeta⠀⠀⠀│ +│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀│ +│mix1⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│mix3⠀⠀⠀⠀⠀⠀│444⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│six6⠀⠀⠀│ +│abc123⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│def456⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀│ghi789⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀│ +│z⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│y⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀│x⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀│ +│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀│ +│t1⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│t2⠀⠀⠀⠀⠀⠀⠀│t3⠀⠀⠀⠀⠀⠀⠀⠀│t4⠀⠀⠀⠀⠀⠀│t5⠀⠀⠀⠀⠀⠀⠀│t6⠀⠀⠀⠀⠀│ +│r1c1⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│r1c2⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│r1c4⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│r1c6⠀⠀⠀│ +│data1⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│data22⠀⠀⠀│data333⠀⠀⠀│data4444│data55555│data6⠀⠀│ +│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀│ +│A⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│B⠀⠀⠀⠀⠀⠀⠀⠀│C⠀⠀⠀⠀⠀⠀⠀⠀⠀│D⠀⠀⠀⠀⠀⠀⠀│E⠀⠀⠀⠀⠀⠀⠀⠀│F⠀⠀⠀⠀⠀⠀│ +│abc⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│123⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀│XYZ⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀│ +│one1⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│two22⠀⠀⠀⠀│three3⠀⠀⠀⠀│four44⠀⠀│five5⠀⠀⠀⠀│six66⠀⠀│ +│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀│ +│r30a⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│r30b⠀⠀⠀⠀⠀│r30c⠀⠀⠀⠀⠀⠀│r30d⠀⠀⠀⠀│r30e⠀⠀⠀⠀⠀│r30f⠀⠀⠀│ +│longvalue1⠀⠀⠀⠀⠀⠀⠀⠀│mid⠀⠀⠀⠀⠀⠀│short⠀⠀⠀⠀⠀│s⠀⠀⠀⠀⠀⠀⠀│tt⠀⠀⠀⠀⠀⠀⠀│uuu⠀⠀⠀⠀│ +│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀│ +│x⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│y⠀⠀⠀⠀⠀⠀⠀⠀│z⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│end⠀⠀⠀⠀│ +│abcde⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│fghij⠀⠀⠀⠀│klmno⠀⠀⠀⠀⠀│pqrst⠀⠀⠀│uvwxy⠀⠀⠀⠀│z⠀⠀⠀⠀⠀⠀│ +│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀│ +│cell1⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│cell3⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀│cell5⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀│ +│111⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│2222⠀⠀⠀⠀⠀│33333⠀⠀⠀⠀⠀│444444⠀⠀│55⠀⠀⠀⠀⠀⠀⠀│6⠀⠀⠀⠀⠀⠀│ +│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀│ +│row40a⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│row40b⠀⠀⠀│row40c⠀⠀⠀⠀│row40d⠀⠀│row40e⠀⠀⠀│row40f⠀│ +│a1⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│a2⠀⠀⠀⠀⠀⠀⠀│a3⠀⠀⠀⠀⠀⠀⠀⠀│a4⠀⠀⠀⠀⠀⠀│a5⠀⠀⠀⠀⠀⠀⠀│a6⠀⠀⠀⠀⠀│ +│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀│ +│mixA⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│mixC⠀⠀⠀⠀⠀⠀│DDD⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│FFF⠀⠀⠀⠀│ +│123abc⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│456def⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│789ghi⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│000⠀⠀⠀⠀│ +│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀│ +│r45a⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│r45b⠀⠀⠀⠀⠀│r45c⠀⠀⠀⠀⠀⠀│r45d⠀⠀⠀⠀│r45e⠀⠀⠀⠀⠀│r45f⠀⠀⠀│ +│alpha9⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│beta8⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀│gamma7⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀│ +│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀│ +│A1B2C3⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│D4E5F6⠀⠀⠀│G7H8I9⠀⠀⠀⠀│J0⠀⠀⠀⠀⠀⠀│K1⠀⠀⠀⠀⠀⠀⠀│L2⠀⠀⠀⠀⠀│ +│short1⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│short3⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀│short5⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀│ +│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀│ +│r50a⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│r50b⠀⠀⠀⠀⠀│r50c⠀⠀⠀⠀⠀⠀│r50d⠀⠀⠀⠀│r50e⠀⠀⠀⠀⠀│r50f⠀⠀⠀│ +│x1y2⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│z3⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│w4⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│v5⠀⠀⠀⠀⠀│ +│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀│ +│longertext⠀⠀⠀⠀⠀⠀⠀⠀│mid⠀⠀⠀⠀⠀⠀│small⠀⠀⠀⠀⠀│s1⠀⠀⠀⠀⠀⠀│s22⠀⠀⠀⠀⠀⠀│s333⠀⠀⠀│ +│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀│ +│r55a⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│r55b⠀⠀⠀⠀⠀│r55c⠀⠀⠀⠀⠀⠀│r55d⠀⠀⠀⠀│r55e⠀⠀⠀⠀⠀│r55f⠀⠀⠀│ +│abc⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│def⠀⠀⠀⠀⠀⠀│ghi⠀⠀⠀⠀⠀⠀⠀│jkl⠀⠀⠀⠀⠀│mno⠀⠀⠀⠀⠀⠀│pqr⠀⠀⠀⠀│ +│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀│ +│1a⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│2b⠀⠀⠀⠀⠀⠀⠀│3c⠀⠀⠀⠀⠀⠀⠀⠀│4d⠀⠀⠀⠀⠀⠀│5e⠀⠀⠀⠀⠀⠀⠀│6f⠀⠀⠀⠀⠀│ +│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀│ +│row60a⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│row60b⠀⠀⠀│row60c⠀⠀⠀⠀│row60d⠀⠀│row60e⠀⠀⠀│row60f⠀│ +│value1⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│value3⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀│value5⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀│ +│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀│ +│aa⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│bb⠀⠀⠀⠀⠀⠀⠀│cc⠀⠀⠀⠀⠀⠀⠀⠀│dd⠀⠀⠀⠀⠀⠀│ee⠀⠀⠀⠀⠀⠀⠀│ff⠀⠀⠀⠀⠀│ +│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀│ +│r65a⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│r65b⠀⠀⠀⠀⠀│r65c⠀⠀⠀⠀⠀⠀│r65d⠀⠀⠀⠀│r65e⠀⠀⠀⠀⠀│r65f⠀⠀⠀│ +│x⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│y⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀│z⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀│ +│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀│ +│alpha01⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│beta02⠀⠀⠀│gamma03⠀⠀⠀│delta04⠀│eps05⠀⠀⠀⠀│z6⠀⠀⠀⠀⠀│ +│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀│ +│row70a⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│row70b⠀⠀⠀│row70c⠀⠀⠀⠀│row70d⠀⠀│row70e⠀⠀⠀│row70f⠀│ +│1⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│3⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀│5⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀│ +│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀│ +│abc1⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│def2⠀⠀⠀⠀⠀│ghi3⠀⠀⠀⠀⠀⠀│jkl4⠀⠀⠀⠀│mno5⠀⠀⠀⠀⠀│pqr6⠀⠀⠀│ +│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀│ +│r75a⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│r75b⠀⠀⠀⠀⠀│r75c⠀⠀⠀⠀⠀⠀│r75d⠀⠀⠀⠀│r75e⠀⠀⠀⠀⠀│r75f⠀⠀⠀│ +│mix⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│mix2⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀│mix3⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀│ +│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀│ +│a⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│b⠀⠀⠀⠀⠀⠀⠀⠀│c⠀⠀⠀⠀⠀⠀⠀⠀⠀│d⠀⠀⠀⠀⠀⠀⠀│e⠀⠀⠀⠀⠀⠀⠀⠀│f⠀⠀⠀⠀⠀⠀│ +│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀│ +│row80a⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│row80b⠀⠀⠀│row80c⠀⠀⠀⠀│row80d⠀⠀│row80e⠀⠀⠀│row80f⠀│ +│123⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│234⠀⠀⠀⠀⠀⠀│345⠀⠀⠀⠀⠀⠀⠀│456⠀⠀⠀⠀⠀│567⠀⠀⠀⠀⠀⠀│678⠀⠀⠀⠀│ +│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀│ +│Aaa⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│Bbb⠀⠀⠀⠀⠀⠀│Ccc⠀⠀⠀⠀⠀⠀⠀│Ddd⠀⠀⠀⠀⠀│Eee⠀⠀⠀⠀⠀⠀│Fff⠀⠀⠀⠀│ +│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀│ +│r85a⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│r85b⠀⠀⠀⠀⠀│r85c⠀⠀⠀⠀⠀⠀│r85d⠀⠀⠀⠀│r85e⠀⠀⠀⠀⠀│r85f⠀⠀⠀│ +│x1⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│x3⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀│x5⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀│ +│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀│ +│abcde12345⠀⠀⠀⠀⠀⠀⠀⠀│f1⠀⠀⠀⠀⠀⠀⠀│g2⠀⠀⠀⠀⠀⠀⠀⠀│h3⠀⠀⠀⠀⠀⠀│i4⠀⠀⠀⠀⠀⠀⠀│j5⠀⠀⠀⠀⠀│ +│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀│ +│row90a⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│row90b⠀⠀⠀│row90c⠀⠀⠀⠀│row90d⠀⠀│row90e⠀⠀⠀│row90f⠀│ +│1a2b3c⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│4d5e6f⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀│7g8h9i⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀│ +│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀│ +│short⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│mid⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀│longer⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀│ +│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀│ +│r95a⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│r95b⠀⠀⠀⠀⠀│r95c⠀⠀⠀⠀⠀⠀│r95d⠀⠀⠀⠀│r95e⠀⠀⠀⠀⠀│r95f⠀⠀⠀│ +│a1b⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│c2d⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀│e3f⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀│ +│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀│ +│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀⠀⠀│⠀⠀⠀⠀⠀⠀⠀│ diff --git a/tests/cases/motion/g-csv/run.vim b/tests/cases/motion/g-csv/run.vim new file mode 100644 index 0000000..0e2ef74 --- /dev/null +++ b/tests/cases/motion/g-csv/run.vim @@ -0,0 +1,24 @@ +" Verify the screen display after executing the Tir redraw command. +" After executing a command that misaligns the border positions, the borders are aligned. + +source $TIRENVI_ROOT/tests/common.vim + +lua << EOF +vim.keymap.set({ 'n', 'o', 'x' }, 'gtf', require('tirenvi').motion.f, { expr = true, desc = '[T]irEnvi: f pipe' }) +vim.keymap.set({ 'n', 'o', 'x' }, 'gtF', require('tirenvi').motion.F, { expr = true, desc = '[T]irEnvi: F pipe' }) +vim.keymap.set({ 'n', 'o', 'x' }, 'gtt', require('tirenvi').motion.t, { expr = true, desc = '[T]irEnvi: t pipe' }) +vim.keymap.set({ 'n', 'o', 'x' }, 'gtT', require('tirenvi').motion.T, { expr = true, desc = '[T]irEnvi: T pipe' }) +vim.keymap.set('n', 'gtg', require('tirenvi').motion.block_top, { desc = '[T]irEnvi: block top' }) +vim.keymap.set('n', 'gtG', require('tirenvi').motion.block_bottom, { desc = '[T]irEnvi: block bottom' }) +EOF + +edit $TIRENVI_ROOT/tests/data/complex.csv +call cursor(2, 1) +call feedkeys("gtg", "x") +call feedkeys("j", "x") +execute "normal dd" +call feedkeys("gtG", "x") +call feedkeys("k", "x") +execute "normal dd" + +call RunTest({}) \ No newline at end of file diff --git a/tests/cases/textobj/val/out-expected.txt b/tests/cases/textobj/val/out-expected.txt index 4c6ec80..cecd673 100644 --- a/tests/cases/textobj/val/out-expected.txt +++ b/tests/cases/textobj/val/out-expected.txt @@ -1,11 +1,7 @@ === MESSAGE === -block of 5 lines yanked +block of 3 lines yanked === DISPLAY === -gfm -│Name⠀│Age│City⠀⠀│Age│ -│----⠀│---│----⠀⠀│---│ -│Alice│23⠀│Tokyo⠀│23⠀│ -│Bob⠀⠀│31⠀│Osaka⠀│31⠀│ -│Carol│27⠀│Nagoya│27⠀│ -markdown +│1a⠀│2 a│ 3a⠀│2 a│ +│1↲⠀│2b⠀│3↲b⇥│2b⠀│ +│↲↲↲│⠀⠀⠀│⇥c⠀⠀│⠀⠀⠀│ diff --git a/tests/cases/textobj/val/run.vim b/tests/cases/textobj/val/run.vim index acc69b1..79a0bd0 100644 --- a/tests/cases/textobj/val/run.vim +++ b/tests/cases/textobj/val/run.vim @@ -9,8 +9,8 @@ M.setup({ }) EOF -edit $TIRENVI_ROOT/tests/data/simple.md -call cursor(6, 12) +edit $TIRENVI_ROOT/tests/data/simple.csv +call cursor(2, 11) call feedkeys("vah", "x") execute "normal y" execute "normal $" diff --git a/tests/data/gfm.md b/tests/data/gfm.md index e271ccd..958c1f1 100644 --- a/tests/data/gfm.md +++ b/tests/data/gfm.md @@ -1,3 +1,6 @@ +# Copied from GitHub Flavored Markdown Spec (Tables Extension) +# https://github.github.com/gfm/#tables-extension- + 4.10Tables (extension) GFM enables the table extension, where an additional leaf block type is available.