diff options
Diffstat (limited to '.vim/lua/internal/align.lua')
| -rw-r--r-- | .vim/lua/internal/align.lua | 75 |
1 files changed, 48 insertions, 27 deletions
diff --git a/.vim/lua/internal/align.lua b/.vim/lua/internal/align.lua index 5dcf7c0..1ada01d 100644 --- a/.vim/lua/internal/align.lua +++ b/.vim/lua/internal/align.lua @@ -14,11 +14,15 @@ function M.align_lines(pat, line1, line2, preview_ns, preview_bufnr) local max = -1 for _, line in pairs(lines) do local s = re:match_str(line) - if s and max < s then max = s end + if s and max < s then + max = s + end end -- exit if nothing was found - if max == -1 then return error('nothing found') end + if max == -1 then + return error('nothing found') + end for i, line in pairs(lines) do local s = re:match_str(line) @@ -27,33 +31,45 @@ function M.align_lines(pat, line1, line2, preview_ns, preview_bufnr) local changeset = { string.sub(line, 1, s), string.rep(' ', rep), - string.sub(line, s+1), + string.sub(line, s + 1), } local newline = table.concat(changeset) -- append to changse if not inside the preview callback if not preview_ns then - newlines[#newlines+1] = newline + newlines[#newlines + 1] = newline end if preview_ns ~= nil then -- set extmarks inside the live buffer - vim.api.nvim_buf_set_extmark(bufnr, preview_ns, line1+i - 2, 0, - { - hl_mode = 'combine', - virt_text_pos = 'overlay', - virt_text = { - {changeset[1]}, - {changeset[2], 'Substitute'}, - {changeset[3]}, - }, - }) + vim.api.nvim_buf_set_extmark(bufnr, preview_ns, line1 + i - 2, 0, { + hl_mode = 'combine', + virt_text_pos = 'overlay', + virt_text = { + { changeset[1] }, + { changeset[2], 'Substitute' }, + { changeset[3] }, + }, + }) -- modify preview buffer if preview_bufnr ~= nil then local prefix = string.format('|%d| ', line1 + i - 1) - vim.api.nvim_buf_set_lines(preview_bufnr, preview_buf_line, preview_buf_line, false, { prefix .. newline }) - vim.api.nvim_buf_add_highlight(preview_bufnr, preview_ns, 'Substitute', preview_buf_line, #prefix + s, #prefix + s + #changeset[2]) + vim.api.nvim_buf_set_lines( + preview_bufnr, + preview_buf_line, + preview_buf_line, + false, + { prefix .. newline } + ) + vim.api.nvim_buf_add_highlight( + preview_bufnr, + preview_ns, + 'Substitute', + preview_buf_line, + #prefix + s, + #prefix + s + #changeset[2] + ) preview_buf_line = preview_buf_line + 1 end end @@ -63,7 +79,9 @@ function M.align_lines(pat, line1, line2, preview_ns, preview_bufnr) -- only change buffer when not previewing if not preview_ns then -- exit if nothing was changed - if #newlines == 0 then return error('nothing changed') end + if #newlines == 0 then + return error('nothing changed') + end vim.api.nvim_buf_set_lines(bufnr, line1 - 1, line2, 0, newlines) return 0 end @@ -75,10 +93,10 @@ function M.align_lines(pat, line1, line2, preview_ns, preview_bufnr) end function M.align(pat) - local top, bot = vim.fn.getpos("'<"), vim.fn.getpos("'>") - M.align_lines(pat, top[2]-1, bot[2]) - vim.fn.setpos("'<", top) - vim.fn.setpos("'>", bot) + local top, bot = vim.fn.getpos("'<"), vim.fn.getpos("'>") + M.align_lines(pat, top[2] - 1, bot[2]) + vim.fn.setpos("'<", top) + vim.fn.setpos("'>", bot) end local function aligncmd(opts, preview_ns, preview_bufnr) @@ -86,18 +104,21 @@ local function aligncmd(opts, preview_ns, preview_bufnr) end local default_opts = { - bindings = true + bindings = true, } function M.setup(opts) opts = vim.tbl_extend('keep', opts or {}, default_opts) - vim.api.nvim_create_user_command('SimpleAlign', aligncmd, - {nargs = 1, range = '%', preview = aligncmd}) + vim.api.nvim_create_user_command( + 'SimpleAlign', + aligncmd, + { nargs = 1, range = '%', preview = aligncmd } + ) - if opts.bindings then - vim.keymap.set('v', '<enter>', ':SimpleAlign ') - end + -- if opts.bindings then + -- vim.keymap.set('v', '<enter>', ':SimpleAlign ') + -- end end return M |