Split lines command works now

This commit is contained in:
Ivar Fatland
2023-07-01 17:14:18 +02:00
parent 02f37de49d
commit b780f4e21d
+20 -24
View File
@@ -380,38 +380,34 @@ do
local leading_whitespace = string.match(line, "^%s*") local leading_whitespace = string.match(line, "^%s*")
local first_line = line:sub(1, first_bracket_i) local first_line = line:sub(1, first_bracket_i)
local last_line = leading_whitespace .. line:sub(last_bracket_i, #line) local last_line = leading_whitespace .. line:sub(last_bracket_i, #line)
local concatenated_middle = line:sub(first_bracket_i+1, last_bracket_i-1)
local adjusted_comma_indexes = {1} -- Gather items
--TODO populate this instead. Don't bother with the indexes local middle_lines = {line:sub(first_bracket_i+1, comma_indexes[1])}
local dirty_middle_lines = {} for i = 1, #comma_indexes-1 do
do table.insert(middle_lines, line:sub(comma_indexes[i], comma_indexes[i+1]))
local first_line_len = #first_line
for _, comma_i in ipairs(comma_indexes) do
table.insert(adjusted_comma_indexes, comma_i - #first_line)
end end
table.insert(adjusted_comma_indexes, #concatenated_middle) table.insert(middle_lines, line:sub(comma_indexes[#comma_indexes], last_bracket_i-1))
-- Cleanup step
for i, middle_line in ipairs(middle_lines) do
middle_line = middle_line:gsub("^[%s,]*", leading_whitespace .. TAB_WHITESPACE, 1)
middle_line = middle_line:gsub("[%s]*$", '', 1)
middle_lines[i] = middle_line
end end
---@type string[] local row, _ = unpack(vim.api.nvim_win_get_cursor(0))
local middle_lines = {} vim.api.nvim_buf_set_lines(0, row-1, row, false, {first_line})
do vim.api.nvim_buf_set_lines(0, row, row, false, {last_line})
---@type string vim.api.nvim_buf_set_lines(0, row, row, false, middle_lines)
local leading_indented_whitespace = leading_whitespace .. TAB_WHITESPACE
for _, comma_i in ipairs(adjusted_comma_indexes) do
table.insert(
middle_lines,
--TODO does not work. Need to separate all the different items, and match from beginning to end to clean them up
leading_indented_whitespace .. concatenated_middle:match('([^%s,].*)%s*,%s*', comma_i)
)
end
end
end end
end end
vim.keymap.set('n', vim.keymap.set(
'n',
keymap.split_line, keymap.split_line,
split_line, split_line,
{ silent = true }) { silent = true }
)
return require('packer').startup(packer_startup) return require('packer').startup(packer_startup)