From c9bf401cc207790f091a23fc9b0b3cab59727b64 Mon Sep 17 00:00:00 2001 From: roodletoof <68161791+roodletoof@users.noreply.github.com> Date: Sat, 25 Jan 2025 17:14:24 +0100 Subject: [PATCH] switched to spaces to better use the alignment thing --- init.lua | 778 +++++++++++++++++++++++++++---------------------------- 1 file changed, 389 insertions(+), 389 deletions(-) diff --git a/init.lua b/init.lua index 6ea0e18..04a1dc7 100644 --- a/init.lua +++ b/init.lua @@ -1,79 +1,78 @@ -- vim:foldmethod=marker -- GENERAL SETTINGS {{{1 -vim.opt.tabstop = 8 -vim.opt.shiftwidth = 0 -vim.opt.rnu = true -vim.opt.nu = true -vim.opt.wrap = false -vim.opt.shiftround = true -vim.opt.expandtab = false -vim.opt.hlsearch = false -vim.opt.incsearch = true -vim.opt.scrolloff = 8 - vim.o.exrc = true -- Enable local project configuration files vim.o.secure = true -- Disable potentially unsafe commands in .nvimrc vim.cmd [[ - set clipboard=unnamedplus - set cursorline + set clipboard=unnamedplus + set cursorline + set tabstop=4 + set shiftwidth=0 + set rnu + set nu + set nowrap + set shiftround + set expandtab + set nohlsearch + set incsearch + set scrolloff=8 - nnoremap ,co :copen - nnoremap ,cc :cclose - nnoremap ,cq :call setqflist([]):cclose - nnoremap ,ct :call setqflist([{'filename': expand('%'), 'lnum': line('.'), 'col': col('.'), 'text': 'TODO'}], 'a') - nnoremap ,cf :cfirst - nnoremap ,cl :clast - nnoremap :cnext - nnoremap :cprevious - nnoremap ,cd :cd %:p:h - nnoremap ,cu :colder - nnoremap ,cr :cnewer + nnoremap ,co :copen + nnoremap ,cc :cclose + nnoremap ,cq :call setqflist([]):cclose + nnoremap ,ct :call setqflist([{'filename': expand('%'), 'lnum': line('.'), 'col': col('.'), 'text': 'TODO'}], 'a') + nnoremap ,cf :cfirst + nnoremap ,cl :clast + nnoremap :cnext + nnoremap :cprevious + nnoremap ,cd :cd %:p:h + nnoremap ,cu :colder + nnoremap ,cr :cnewer - nnoremap ,cD :call setqflist(filter(getqflist(), 'v:val != getqflist()[getqflist({"idx": 0}).idx - 1]')) + nnoremap ,cD :call setqflist(filter(getqflist(), 'v:val != getqflist()[getqflist({"idx": 0}).idx - 1]')) - tnoremap - autocmd BufEnter * if &buftype == 'terminal' | :startinsert | endif - nnoremap ,t vl:terminala + tnoremap + autocmd BufEnter * if &buftype == 'terminal' | :startinsert | endif + nnoremap ,t vl:terminala - autocmd BufWinLeave *.* silent! mkview - autocmd BufWinEnter *.* silent! loadview + autocmd BufWinLeave *.* silent! mkview + autocmd BufWinEnter *.* silent! loadview - nnoremap h - nnoremap j - nnoremap k - nnoremap l - nnoremap ,v v - tnoremap h - tnoremap j - tnoremap k - tnoremap l + nnoremap h + nnoremap j + nnoremap k + nnoremap l + nnoremap ,v v + tnoremap h + tnoremap j + tnoremap k + tnoremap l - tnoremap c c + tnoremap c c - autocmd TextYankPost * silent! lua vim.highlight.on_yank {higroup='Visual', timeout=100} + autocmd TextYankPost * silent! lua vim.highlight.on_yank {higroup='Visual', timeout=100} - let g:rustfmt_autosave = 1 + let g:rustfmt_autosave = 1 ]] vim.g.c_syntax_for_h = 1 vim.g.python_indent = { -- Fixes retarded default python indentation. - open_paren = 'shiftwidth()', - nested_paren = 'shiftwidth()', - continue = 'shiftwidth()', - closed_paren_align_last_line = false, - searchpair_timeout = 300, + open_paren = 'shiftwidth()', + nested_paren = 'shiftwidth()', + continue = 'shiftwidth()', + closed_paren_align_last_line = false, + searchpair_timeout = 300, } local function file_exists(name) --{{{1 - local f = io.open(name,"r") - if f~=nil then - f:close() - return true - else - return false - end + local f = io.open(name,"r") + if f~=nil then + f:close() + return true + else + return false + end end @@ -81,376 +80,377 @@ end local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" if not (vim.uv or vim.loop).fs_stat(lazypath) then vim.fn.system({ - "git", - "clone", - "--filter=blob:none", - "https://github.com/folke/lazy.nvim.git", - "--branch=stable", -- latest stable release - lazypath, + "git", + "clone", + "--filter=blob:none", + "https://github.com/folke/lazy.nvim.git", + "--branch=stable", -- latest stable release + lazypath, }) end vim.opt.rtp:prepend(lazypath) require'lazy'.setup{ --{{{1 - { 'justinmk/vim-sneak', --{{{2 - }, - { 'michaeljsmith/vim-indent-object', --{{{2 - }, - { 'kylechui/nvim-surround', --{{{2 - version = '*', -- Use for stability; omit to use `main` branch for the latest features - event = 'VeryLazy', - config = function() - require('nvim-surround').setup{} - end - }, - { 'echasnovski/mini.align', --{{{2 - version = false, - config = function() - require'mini.align'.setup() - end, - }, - { 'sainnhe/everforest', --{{{2 - lazy = false, - priority = 1000, - config = function() - vim.o.termguicolors = true - vim.g.everforest_enable_italic = true - vim.cmd.colorscheme('everforest') - end, - }, - { 'folke/zen-mode.nvim', --{{{2 - config = function () - vim.keymap.set( - 'n', - ",z", - vim.cmd.ZenMode, - { silent = true } - ) - end - }, - { 'stevearc/oil.nvim', --{{{2 - dependencies = { 'nvim-tree/nvim-web-devicons', }, - config = function () - local oil = require('oil') - oil.setup{ - default_file_explorer = true, - columns = {'icon'}, - view_options = { - show_hidden = true, - }, - lsp_file_methods = { - enables = true, - timeout_ms = 1000, - autosave_changes = true, - }, - keymaps = { - [",cd"] = { "actions.cd", mode = "n" }, - }, - } - vim.keymap.set("n", "-", vim.cmd.Oil, { desc = "Open parent directory" }) - end, - }, - { 'neovim/nvim-lspconfig', --{{{2 - config = function() - require'lspconfig'.gopls.setup{} - require'lspconfig'.rust_analyzer.setup{} - require'lspconfig'.gdscript.setup{} - require'lspconfig'.clangd.setup{} - require'lspconfig'.pyright.setup{} - require'lspconfig'.ts_ls.setup{} - require'lspconfig'.jdtls.setup{} - vim.cmd [[ - noremap ,rn :lua vim.lsp.buf.rename() - noremap ,fd :lua vim.lsp.buf.definition() - noremap ,ft :lua vim.lsp.buf.type_definition() - noremap ,fr :lua vim.lsp.buf.references() - noremap ,ca :lua vim.lsp.buf.code_action() - noremap ,oe :lua vim.diagnostic.open_float() - noremap ,ea :lua vim.diagnostic.setqflist() - noremap ,ee :lua vim.diagnostic.setqflist{severity="ERROR"} - noremap ,ew :lua vim.diagnostic.setqflist{severity="WARN"} - noremap ,ei :lua vim.diagnostic.setqflist{severity="INFO"} - noremap ,eh :lua vim.diagnostic.setqflist{severity="HINT"} - ]] - end - }, - { 'mfussenegger/nvim-dap', --{{{2 - dependencies = { - 'nvim-treesitter/nvim-treesitter', - 'theHamsta/nvim-dap-virtual-text', - 'leoluz/nvim-dap-go', - 'mfussenegger/nvim-dap-python', - }, + { 'justinmk/vim-sneak', --{{{2 + }, + { 'michaeljsmith/vim-indent-object', --{{{2 + }, + { 'kylechui/nvim-surround', --{{{2 + version = '*', -- Use for stability; omit to use `main` branch for the latest features + event = 'VeryLazy', + config = function() + require('nvim-surround').setup{} + end + }, + { 'echasnovski/mini.align', --{{{2 + version = false, + config = function() + require'mini.align'.setup() + end, + }, + { 'sainnhe/everforest', --{{{2 + lazy = false, + priority = 1000, + config = function() + vim.o.termguicolors = true + vim.g.everforest_enable_italic = true + vim.cmd.colorscheme('everforest') + end, + }, + { 'folke/zen-mode.nvim', --{{{2 + config = function () + vim.keymap.set( + 'n', + ",z", + vim.cmd.ZenMode, + { silent = true } + ) + end + }, + { 'stevearc/oil.nvim', --{{{2 + dependencies = { 'nvim-tree/nvim-web-devicons', }, + config = function () + local oil = require('oil') + oil.setup{ + default_file_explorer = true, + columns = {'icon'}, + view_options = { + show_hidden = true, + }, + lsp_file_methods = { + enables = true, + timeout_ms = 1000, + autosave_changes = true, + }, + keymaps = { + [",cd"] = { "actions.cd", mode = "n" }, + }, + } + vim.keymap.set("n", "-", vim.cmd.Oil, { desc = "Open parent directory" }) + end, + }, + { 'neovim/nvim-lspconfig', --{{{2 + config = function() + require'lspconfig'.gopls.setup{} + require'lspconfig'.rust_analyzer.setup{} + require'lspconfig'.gdscript.setup{} + require'lspconfig'.clangd.setup{} + require'lspconfig'.pyright.setup{} + require'lspconfig'.ts_ls.setup{} + require'lspconfig'.jdtls.setup{} + vim.cmd [[ + noremap ,rn :lua vim.lsp.buf.rename() + noremap ,fd :lua vim.lsp.buf.definition() + noremap ,ft :lua vim.lsp.buf.type_definition() + noremap ,fr :lua vim.lsp.buf.references() + noremap ,ca :lua vim.lsp.buf.code_action() + noremap ,oe :lua vim.diagnostic.open_float() + noremap ,ea :lua vim.diagnostic.setqflist() + noremap ,ee :lua vim.diagnostic.setqflist{severity="ERROR"} + noremap ,ew :lua vim.diagnostic.setqflist{severity="WARN"} + noremap ,ei :lua vim.diagnostic.setqflist{severity="INFO"} + noremap ,eh :lua vim.diagnostic.setqflist{severity="HINT"} + ]] + end + }, + { 'mfussenegger/nvim-dap', --{{{2 + dependencies = { + 'nvim-treesitter/nvim-treesitter', + 'theHamsta/nvim-dap-virtual-text', + 'leoluz/nvim-dap-go', + 'mfussenegger/nvim-dap-python', + }, - config = function() - require'nvim-dap-virtual-text'.setup{ commented = true, } - require'dap-go'.setup() - require'dap-python'.setup(vim.fn.stdpath('config') .. '/.venv/bin/python') + config = function() + require'nvim-dap-virtual-text'.setup{ commented = true, } + require'dap-go'.setup() + require'dap-python'.setup(vim.fn.stdpath('config') .. '/.venv/bin/python') - local dap = require'dap' - dap.adapters.godot = { type = 'server', host = '127.0.0.1', port = 6006, } - dap.configurations.gdscript = { {type = 'godot', request = 'launch', name = 'Launch scene', project = "${workspaceFolder}",} } + local dap = require'dap' + dap.adapters.godot = { type = 'server', host = '127.0.0.1', port = 6006, } + dap.configurations.gdscript = { {type = 'godot', request = 'launch', name = 'Launch scene', project = "${workspaceFolder}",} } - vim.cmd [[ - nnoremap ,b :DapToggleBreakpoint - nnoremap ,B :DapClearBreakpoints - nnoremap - nnoremap ,db :DapContinue - nnoremap :DapStepInto - nnoremap :DapStepOut - nnoremap :DapStepOver - ]] - end - }, - { 'dcampos/nvim-snippy', --{{{2 - config = function() - require'snippy'.setup{ enable_auto = true, } - vim.cmd [[ - imap '(snippy-next)' - imap '(snippy-previous)' - smap '(snippy-next)' - smap '(snippy-previous)' - xmap (snippy-cut-text) - ]] + vim.cmd [[ + nnoremap ,b :DapToggleBreakpoint + nnoremap ,B :DapClearBreakpoints + nnoremap + nnoremap ,db :DapContinue + nnoremap :DapStepInto + nnoremap :DapStepOut + nnoremap :DapStepOver + ]] + end + }, + { 'dcampos/nvim-snippy', --{{{2 + config = function() + require'snippy'.setup{ enable_auto = true, } + vim.cmd [[ + imap '(snippy-next)' + imap '(snippy-previous)' + smap '(snippy-next)' + smap '(snippy-previous)' + xmap (snippy-cut-text) + ]] - vim.api.nvim_create_user_command( - 'S', - function () - ---@type string - local snippets_path = vim.fn.stdpath('config') .. '/snippets/' .. vim.api.nvim_buf_get_option(0, "filetype") .. '.snippets' + vim.api.nvim_create_user_command( + 'S', + function () + ---@type string + local snippets_path = vim.fn.stdpath('config') .. '/snippets/' .. vim.api.nvim_buf_get_option(0, "filetype") .. '.snippets' - if not file_exists(snippets_path) then - local file = io.open( snippets_path, 'w' ) - assert( - file ~= nil, - ("io.open('%s', 'w') returned nil.\n"):format(snippets_path) .. - "Make sure the snippets folder in the above path exists." - ) - file:close() - print('created file: ', snippets_path) - end + if not file_exists(snippets_path) then + local file = io.open( snippets_path, 'w' ) + assert( + file ~= nil, + ("io.open('%s', 'w') returned nil.\n"):format(snippets_path) .. + "Make sure the snippets folder in the above path exists." + ) + file:close() + print('created file: ', snippets_path) + end - vim.api.nvim_command(('SnippyEdit %s'):format(snippets_path)) - end, - { nargs = 0 } - ) - end - }, - { 'hrsh7th/nvim-cmp', --{{{2 - dependencies = { - 'hrsh7th/cmp-nvim-lsp', - 'hrsh7th/cmp-buffer', - 'hrsh7th/cmp-path', - 'dcampos/nvim-snippy', - 'dcampos/cmp-snippy', - }, - config = function() - local cmp = require'cmp' - cmp.setup{ - snippet = { - expand = function(args) - require'snippy'.expand_snippet(args.body) - end, - }, - mapping = { - [''] = cmp.mapping.confirm{ select = true }, - [''] = cmp.mapping.select_next_item(), - [''] = cmp.mapping.select_prev_item(), - }, - sources = cmp.config.sources( - { - { name = 'snippy', priority = 100000000000000000000 }, - { name = 'nvim_lsp', priority = 100}, - { name = 'path', priority = 1}, - } - ), - preselect = cmp.PreselectMode.None, - } - end, - }, - { 'nvim-telescope/telescope.nvim', --{{{2 - tag = '0.1.8', - dependencies = { - 'nvim-lua/plenary.nvim', - 'nvim-telescope/telescope-ui-select.nvim', - }, - config = function() - local a = require'telescope.actions' - require'telescope'.setup{ - defaults = { - mappings = { - i = { [""] = a.smart_send_to_qflist + a.open_qflist, [""] = a.select_default, }, - n = { [""] = a.smart_send_to_qflist + a.open_qflist, [""] = a.select_default, }, - } - }, - extensions = { ['ui-select'] = { require'telescope.themes'.get_dropdown{}, }, }, - } - vim.cmd [[ - noremap ,ff :lua require'telescope.builtin'.find_files() - noremap ,fo :lua require'telescope.builtin'.oldfiles() - noremap ,fg :lua require'telescope.builtin'.live_grep() - noremap ,fz :lua require'telescope.builtin'.current_buffer_fuzzy_find() - noremap ,fh :lua require'telescope.builtin'.help_tags() - noremap ,fm :lua require'telescope.builtin'.marks() - noremap ,fb :lua require'telescope.builtin'.buffers() + vim.api.nvim_command(('SnippyEdit %s'):format(snippets_path)) + end, + { nargs = 0 } + ) + end + }, + { 'hrsh7th/nvim-cmp', --{{{2 + dependencies = { + 'hrsh7th/cmp-nvim-lsp', + 'hrsh7th/cmp-buffer', + 'hrsh7th/cmp-path', + 'dcampos/nvim-snippy', + 'dcampos/cmp-snippy', + }, + config = function() + local cmp = require'cmp' + cmp.setup{ + snippet = { + expand = function(args) + require'snippy'.expand_snippet(args.body) + end, + }, + mapping = { + [''] = cmp.mapping.confirm{ select = true }, + [''] = cmp.mapping.select_next_item(), + [''] = cmp.mapping.select_prev_item(), + }, + sources = cmp.config.sources( + { + { name = 'snippy', priority = 100000000000000000000 }, + { name = 'nvim_lsp', priority = 100}, + { name = 'path', priority = 1}, + } + ), + preselect = cmp.PreselectMode.None, + } + end, + }, + { 'nvim-telescope/telescope.nvim', --{{{2 + tag = '0.1.8', + dependencies = { + 'nvim-lua/plenary.nvim', + 'nvim-telescope/telescope-ui-select.nvim', + }, + config = function() + local a = require'telescope.actions' + require'telescope'.setup{ + defaults = { + mappings = { + i = { [""] = a.smart_send_to_qflist + a.open_qflist, [""] = a.select_default, }, + n = { [""] = a.smart_send_to_qflist + a.open_qflist, [""] = a.select_default, }, + } + }, + extensions = { ['ui-select'] = { require'telescope.themes'.get_dropdown{}, }, }, + } + vim.cmd [[ + noremap ,ff :lua require'telescope.builtin'.find_files() + noremap ,fo :lua require'telescope.builtin'.oldfiles() + noremap ,fg :lua require'telescope.builtin'.live_grep() + noremap ,fz :lua require'telescope.builtin'.current_buffer_fuzzy_find() + noremap ,fh :lua require'telescope.builtin'.help_tags() + noremap ,fm :lua require'telescope.builtin'.marks() + noremap ,fb :lua require'telescope.builtin'.buffers() - noremap ,fct :lua require'telescope.builtin'.tags() + noremap ,fct :lua require'telescope.builtin'.tags() - noremap ,fea :lua require'telescope.builtin'.diagnostics() - noremap ,fee :lua require'telescope.builtin'.diagnostics{severity="ERROR"} - noremap ,few :lua require'telescope.builtin'.diagnostics{severity="WARN"} - noremap ,fei :lua require'telescope.builtin'.diagnostics{severity="INFO"} - noremap ,feh :lua require'telescope.builtin'.diagnostics{severity="HINT"} - ]] + noremap ,fea :lua require'telescope.builtin'.diagnostics() + noremap ,fee :lua require'telescope.builtin'.diagnostics{severity="ERROR"} + noremap ,few :lua require'telescope.builtin'.diagnostics{severity="WARN"} + noremap ,fei :lua require'telescope.builtin'.diagnostics{severity="INFO"} + noremap ,feh :lua require'telescope.builtin'.diagnostics{severity="HINT"} + ]] - require'telescope'.load_extension'ui-select' - end, - }, + require'telescope'.load_extension'ui-select' + end, + }, } do -- split line {{{1 - local SPLIT_WHITESPACE = ' ' - local SPLIT_DELIMETERS = { -- single characters only - [','] = true, - [';'] = true, - } - local SPLIT_BETWEEN = { -- single characters only - ['('] = ')', - ['['] = ']', - ['{'] = '}', - ['<'] = '>', - } - local SPLIT_IGNORE_BETWEEN = { --single characters only - ['"'] = '"', - ["'"] = "'", - } + -- TODO make this dependant on my tabbin settings + local SPLIT_WHITESPACE = ' ' + local SPLIT_DELIMETERS = { -- single characters only + [','] = true, + [';'] = true, + } + local SPLIT_BETWEEN = { -- single characters only + ['('] = ')', + ['['] = ']', + ['{'] = '}', + ['<'] = '>', + } + local SPLIT_IGNORE_BETWEEN = { --single characters only + ['"'] = '"', + ["'"] = "'", + } - local split_line = function() - local line = vim.api.nvim_get_current_line() - local _, col = unpack(vim.api.nvim_win_get_cursor(0)) - col = col + 1 -- Doing this to make it 1-indexed + local split_line = function() + local line = vim.api.nvim_get_current_line() + local _, col = unpack(vim.api.nvim_win_get_cursor(0)) + col = col + 1 -- Doing this to make it 1-indexed - ---@type integer? - local first_bracket_i = nil - for i = col, #line do - local char = line:sub(i, i) - if SPLIT_BETWEEN[char] ~= nil then - first_bracket_i = i - break - end - end + ---@type integer? + local first_bracket_i = nil + for i = col, #line do + local char = line:sub(i, i) + if SPLIT_BETWEEN[char] ~= nil then + first_bracket_i = i + break + end + end - if not first_bracket_i then - print('No opening brackets found after cursor on this line.') - return - end + if not first_bracket_i then + print('No opening brackets found after cursor on this line.') + return + end - ---@type integer[] - local split_indexes = {} -- Populate this array - ---@type integer? - local last_bracket_i = nil -- And find this index + ---@type integer[] + local split_indexes = {} -- Populate this array + ---@type integer? + local last_bracket_i = nil -- And find this index - do - ---@type string[] - local closing_bracket_stack = {} - local icon_to_close_ignore = '' - local in_ignore = false + do + ---@type string[] + local closing_bracket_stack = {} + local icon_to_close_ignore = '' + local in_ignore = false - for i = first_bracket_i, #line do - local char = line:sub(i,i) + for i = first_bracket_i, #line do + local char = line:sub(i,i) - if in_ignore then - in_ignore = not (char == icon_to_close_ignore) - goto continue - end + if in_ignore then + in_ignore = not (char == icon_to_close_ignore) + goto continue + end - if SPLIT_IGNORE_BETWEEN[char] ~= nil then - icon_to_close_ignore = SPLIT_IGNORE_BETWEEN[char] - in_ignore = true - goto continue - end - -- string handling complete + if SPLIT_IGNORE_BETWEEN[char] ~= nil then + icon_to_close_ignore = SPLIT_IGNORE_BETWEEN[char] + in_ignore = true + goto continue + end + -- string handling complete - if SPLIT_BETWEEN[char] ~= nil then - table.insert( - closing_bracket_stack, - SPLIT_BETWEEN[char] - ) - end + if SPLIT_BETWEEN[char] ~= nil then + table.insert( + closing_bracket_stack, + SPLIT_BETWEEN[char] + ) + end - if char == closing_bracket_stack[#closing_bracket_stack] then - table.remove(closing_bracket_stack) - end + if char == closing_bracket_stack[#closing_bracket_stack] then + table.remove(closing_bracket_stack) + end - if #closing_bracket_stack == 1 and SPLIT_DELIMETERS[char] then - table.insert(split_indexes, i) - end + if #closing_bracket_stack == 1 and SPLIT_DELIMETERS[char] then + table.insert(split_indexes, i) + end - if #closing_bracket_stack == 0 then - last_bracket_i = i - break - end - ::continue:: - end - end + if #closing_bracket_stack == 0 then + last_bracket_i = i + break + end + ::continue:: + end + end - if not last_bracket_i then - print("The first opening bracket found after the cursor was not closed on this line.") - return - end - if #split_indexes == 0 then - print('No comma separated items within brackets that were opened and closed after the cursor.') - return - end + if not last_bracket_i then + print("The first opening bracket found after the cursor was not closed on this line.") + return + end + if #split_indexes == 0 then + print('No comma separated items within brackets that were opened and closed after the cursor.') + return + end - ---@type string - local leading_whitespace = string.match(line, "^%s*") - local first_line = line:sub(1, first_bracket_i) - local last_line = leading_whitespace .. line:sub(last_bracket_i, #line) + ---@type string + local leading_whitespace = string.match(line, "^%s*") + local first_line = line:sub(1, first_bracket_i) + local last_line = leading_whitespace .. line:sub(last_bracket_i, #line) - local middle_lines = {} - table.insert( - middle_lines, - line:sub(first_bracket_i+1, split_indexes[1]) - ) - for i = 1, #split_indexes-1 do - table.insert( - middle_lines, - line:sub(split_indexes[i], split_indexes[i+1]) - ) - end - table.insert( - middle_lines, - line:sub(split_indexes[#split_indexes], last_bracket_i-1) - ) + local middle_lines = {} + table.insert( + middle_lines, + line:sub(first_bracket_i+1, split_indexes[1]) + ) + for i = 1, #split_indexes-1 do + table.insert( + middle_lines, + line:sub(split_indexes[i], split_indexes[i+1]) + ) + end + table.insert( + middle_lines, + line:sub(split_indexes[#split_indexes], last_bracket_i-1) + ) - local leading_pattern = "^[%s" - for k, _ in pairs(SPLIT_DELIMETERS) do - leading_pattern = leading_pattern .. k - end - leading_pattern = leading_pattern .. "]*" + local leading_pattern = "^[%s" + for k, _ in pairs(SPLIT_DELIMETERS) do + leading_pattern = leading_pattern .. k + end + leading_pattern = leading_pattern .. "]*" - -- Cleanup step - for i, middle_line in ipairs(middle_lines) do - middle_line = middle_line:gsub(leading_pattern, leading_whitespace .. SPLIT_WHITESPACE, 1) - middle_line = middle_line:gsub("[%s]*$", '', 1) - middle_lines[i] = middle_line - end + -- Cleanup step + for i, middle_line in ipairs(middle_lines) do + middle_line = middle_line:gsub(leading_pattern, leading_whitespace .. SPLIT_WHITESPACE, 1) + middle_line = middle_line:gsub("[%s]*$", '', 1) + middle_lines[i] = middle_line + end - if middle_lines[#middle_lines]:match("^%s*$") ~= nil then - table.remove(middle_lines) - end + if middle_lines[#middle_lines]:match("^%s*$") ~= nil then + table.remove(middle_lines) + end - local row, _ = unpack(vim.api.nvim_win_get_cursor(0)) - vim.api.nvim_buf_set_lines(0, row-1, row, false, {first_line}) - vim.api.nvim_buf_set_lines(0, row, row, false, {last_line}) - vim.api.nvim_buf_set_lines(0, row, row, false, middle_lines) - end + local row, _ = unpack(vim.api.nvim_win_get_cursor(0)) + vim.api.nvim_buf_set_lines(0, row-1, row, false, {first_line}) + vim.api.nvim_buf_set_lines(0, row, row, false, {last_line}) + vim.api.nvim_buf_set_lines(0, row, row, false, middle_lines) + end - vim.keymap.set( - 'n', - ",s", - split_line, - { silent = true } - ) + vim.keymap.set( + 'n', + ",s", + split_line, + { silent = true } + ) end