Split lines command works now
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user