diff --git a/init.lua b/init.lua index a106024..8ff3a4e 100644 --- a/init.lua +++ b/init.lua @@ -4,7 +4,7 @@ local g = vim.g local opt = vim.opt ---- General Config ---- -opt.mouse = 'a' +opt.mouse = "a" opt.tabstop = 2 opt.shiftwidth = 2 opt.number = true @@ -23,7 +23,7 @@ opt.shortmess:append({ I = true }) --opt.whichwrap = {'<','>','[',']'} opt.cmdheight = 2 opt.showcmd = true -g.mapleader = ' ' +g.mapleader = " " ---- Terminal ---- vim.api.nvim_create_autocmd({ "TermOpen" }, { @@ -36,100 +36,101 @@ vim.api.nvim_create_autocmd({ "TermOpen" }, { ---- Theming ---- opt.termguicolors = true -opt.background = 'dark' +opt.background = "dark" g.gruvbox_italic = true -cmd.colorscheme('gruvbox') +cmd.colorscheme("gruvbox") opt.listchars = { - eol = '↲' , - tab = '▶▹', - nbsp = '␣', - extends = '…', - trail = '•'} + eol = "↲", + tab = "▶▹", + nbsp = "␣", + extends = "…", + trail = "•", +} -- vim-airline config --- g.airline_powerline_fonts = true -g.airline_theme = 'powerlineish' -g['airline#extensions#tabline#enabled'] = 1 -g['airline#extensions#tabline#left_sep'] = ' ' -g['airline#extensions#tabline#left_alt_sep'] = '|' +g.airline_theme = "powerlineish" +g["airline#extensions#tabline#enabled"] = 1 +g["airline#extensions#tabline#left_sep"] = " " +g["airline#extensions#tabline#left_alt_sep"] = "|" ---- Maps ---- -vim.keymap.set('!','','') -vim.keymap.set('v','>','>gv') -vim.keymap.set('v','<','',':nohlsearch') +vim.keymap.set("!", "", "") +vim.keymap.set("v", ">", ">gv") +vim.keymap.set("v", "<", "", ":nohlsearch") ---- Treesitter ---- -local ts = require 'nvim-treesitter.configs' -ts.setup { +local ts = require("nvim-treesitter.configs") +ts.setup({ ensure_installed = { - 'bash', - 'c', - 'cmake', - 'comment', - 'cpp', - 'css', - 'dockerfile', - 'diff', - 'dot', - 'git_config', - 'git_rebase', - 'gitattributes', - 'gitcommit', - 'gitignore', - 'go', - 'html', - 'http', - 'ini', - 'javascript', - 'json', - 'kdl', - 'kotlin', - 'latex', - 'lua', - 'make', - 'markdown', - 'markdown_inline', - 'passwd', - 'perl', - 'php', - 'python', - 'regex', - 'rust', - 'scss', - 'sql', - 'terraform', - 'toml', - 'typescript', - 'vim', - 'yaml', + "bash", + "c", + "cmake", + "comment", + "cpp", + "css", + "dockerfile", + "diff", + "dot", + "git_config", + "git_rebase", + "gitattributes", + "gitcommit", + "gitignore", + "go", + "html", + "http", + "ini", + "javascript", + "json", + "kdl", + "kotlin", + "latex", + "lua", + "make", + "markdown", + "markdown_inline", + "passwd", + "perl", + "php", + "python", + "regex", + "rust", + "scss", + "sql", + "terraform", + "toml", + "typescript", + "vim", + "yaml", }, - highlight = {enable = true, indent = true}} + highlight = { enable = true, indent = true }, +}) ---- Filetypes --- -vim.filetype.add({ extension = {kdl = 'kdl'} }) - +vim.filetype.add({ extension = { kdl = "kdl" } }) ---- LSP ---- -local lsp = require 'lspconfig' +local lsp = require("lspconfig") -- Use an on_attach function to only map the following keys -- after the language server attaches to the current buffer local on_lsp_attach = function(client, bufnr) -- See `:help vim.lsp.*` for documentation on any of the below functions - vim.keymap.set('n', 'gD', 'lua vim.lsp.buf.declaration()', opts) - vim.keymap.set('n', 'gd', 'lua vim.lsp.buf.definition()', opts) - vim.keymap.set('n', 'K', 'lua vim.lsp.buf.hover()', opts) - vim.keymap.set('n', 'gi', 'lua vim.lsp.buf.implementation()', opts) - vim.keymap.set('n', '', 'lua vim.lsp.buf.signature_help()', opts) - vim.keymap.set('n', 'D', 'lua vim.lsp.buf.type_definition()', opts) - vim.keymap.set('n', 'rn', 'lua vim.lsp.buf.rename()', opts) - vim.keymap.set('n', 'ca', 'lua vim.lsp.buf.code_action()', opts) - vim.keymap.set('n', 'gr', 'lua vim.lsp.buf.references()', opts) - vim.keymap.set('n', 'e', 'lua vim.diagnostic.open_float()', opts) - vim.keymap.set('n', '[d', 'lua vim.diagnostic.goto_prev()', opts) - vim.keymap.set('n', ']d', 'lua vim.diagnostic.goto_next()', opts) - vim.keymap.set('n', 'q', 'lua vim.diagnostic.setloclist()', opts) - vim.keymap.set('n', '', 'lua vim.lsp.buf.formatting()', opts) + vim.keymap.set("n", "gD", "lua vim.lsp.buf.declaration()", opts) + vim.keymap.set("n", "gd", "lua vim.lsp.buf.definition()", opts) + vim.keymap.set("n", "K", "lua vim.lsp.buf.hover()", opts) + vim.keymap.set("n", "gi", "lua vim.lsp.buf.implementation()", opts) + vim.keymap.set("n", "", "lua vim.lsp.buf.signature_help()", opts) + vim.keymap.set("n", "D", "lua vim.lsp.buf.type_definition()", opts) + vim.keymap.set("n", "rn", "lua vim.lsp.buf.rename()", opts) + vim.keymap.set("n", "ca", "lua vim.lsp.buf.code_action()", opts) + vim.keymap.set("n", "gr", "lua vim.lsp.buf.references()", opts) + vim.keymap.set("n", "e", "lua vim.diagnostic.open_float()", opts) + vim.keymap.set("n", "[d", "lua vim.diagnostic.goto_prev()", opts) + vim.keymap.set("n", "]d", "lua vim.diagnostic.goto_next()", opts) + vim.keymap.set("n", "q", "lua vim.diagnostic.setloclist()", opts) + vim.keymap.set("n", "", "lua vim.lsp.buf.formatting()", opts) end -- Use a loop to conveniently call 'setup' on multiple servers and @@ -159,36 +160,36 @@ vim.api.nvim_create_autocmd({ "BufWritePre" }, { ---- Plugins ---- -- Go -g.ale_go_golangci_lint_options = '' +g.ale_go_golangci_lint_options = "" g.ale_go_golangci_lint_package = 1 ---- nvim-lint ---- -local lint = require 'lint' -local clippy_format = '%E%f:%l:%c: %\\d%#:%\\d%# %.%\\{-}' - .. 'error:%.%\\{-} %m,%W%f:%l:%c: %\\d%#:%\\d%# %.%\\{-}' - .. 'warning:%.%\\{-} %m,%C%f:%l %m,%-G,%-G' - .. 'error: aborting %.%#,%-G' - .. 'error: Could not compile %.%#,%E' - .. 'error: %m,%Eerror[E%n]: %m,%-G' - .. 'warning: the option `Z` is unstable %.%#,%W' - .. 'warning: %m,%Inote: %m,%C %#--> %f:%l:%c' +local lint = require("lint") +local clippy_format = "%E%f:%l:%c: %\\d%#:%\\d%# %.%\\{-}" + .. "error:%.%\\{-} %m,%W%f:%l:%c: %\\d%#:%\\d%# %.%\\{-}" + .. "warning:%.%\\{-} %m,%C%f:%l %m,%-G,%-G" + .. "error: aborting %.%#,%-G" + .. "error: Could not compile %.%#,%E" + .. "error: %m,%Eerror[E%n]: %m,%-G" + .. "warning: the option `Z` is unstable %.%#,%W" + .. "warning: %m,%Inote: %m,%C %#--> %f:%l:%c" lint.linters.clippy = { - cmd = 'cargo clippy', + cmd = "cargo clippy", stdin = false, append_fname = true, args = {}, - stream = 'stdout', + stream = "stdout", ignore_exitcode = false, env = nil, - parser = require('lint.parser').from_errorformat(clippy_format) + parser = require("lint.parser").from_errorformat(clippy_format), } linters = { - bash = {'shellcheck'}, - go = {'golangcilint'}, - python = {'flake8'}, - rust = {'clippy'}, - yaml = {'yamllint'}, + bash = { "shellcheck" }, + go = { "golangcilint" }, + python = { "flake8" }, + rust = { "clippy" }, + yaml = { "yamllint" }, } -- set linters -- lint.linters_by_ft = linters @@ -204,70 +205,59 @@ for ft, ft_linters in pairs(linters) do end end if on_change then - vim.api.nvim_create_autocmd( - {"FileType"}, - { - pattern=ft, - callback = function() - vim.api.nvim_create_autocmd( - {"TextChanged" }, - { - callback = function() - lint.try_lint(nil, {ignore_errors=true}) - end, - } - ) - end - } - ) + vim.api.nvim_create_autocmd({ "FileType" }, { + pattern = ft, + callback = function() + vim.api.nvim_create_autocmd({ "TextChanged" }, { + callback = function() + lint.try_lint(nil, { ignore_errors = true }) + end, + }) + end, + }) end if on_write then - vim.api.nvim_create_autocmd( - {"FileType"}, - { - pattern=ft, - callback = function() - vim.api.nvim_create_autocmd( - {"BufWritePost" }, - { - callback = function() - lint.try_lint(nil, {ignore_errors=true}) - end, - } - ) - end - } - ) + vim.api.nvim_create_autocmd({ "FileType" }, { + pattern = ft, + callback = function() + vim.api.nvim_create_autocmd({ "BufWritePost" }, { + callback = function() + lint.try_lint(nil, { ignore_errors = true }) + end, + }) + end, + }) end end ---- LuaSnip -require('luasnip.loaders.from_lua').lazy_load() -local luasnip = require 'luasnip' +require("luasnip.loaders.from_lua").lazy_load() +local luasnip = require("luasnip") luasnip.config.set_config({ - store_selection_keys = '', + store_selection_keys = "", }) -vim.keymap.set({"i", "s"}, "", function() +vim.keymap.set({ "i", "s" }, "", function() if luasnip.expand_or_jumpable() then luasnip.expand_or_jump() else vim.api.nvim_feedkeys( - vim.api.nvim_replace_termcodes('',true,false,true), - 'n', -- noremap to avoid infinite recursion - true) + vim.api.nvim_replace_termcodes("", true, false, true), + "n", -- noremap to avoid infinite recursion + true + ) end -end, {silent = true}) -vim.keymap.set({"i", "s"}, "", function() +end, { silent = true }) +vim.keymap.set({ "i", "s" }, "", function() if luasnip.jumpable(-1) then luasnip.jump(-1) end -end, {silent = true}) +end, { silent = true }) ---- completion-nvim -local cmp = require'cmp' +local cmp = require("cmp") cmp.setup({ snippet = { expand = function(args) - require('luasnip').lsp_expand(args.body) -- For `luasnip` users. + require("luasnip").lsp_expand(args.body) -- For `luasnip` users. end, }, window = { @@ -275,26 +265,25 @@ cmp.setup({ -- documentation = cmp.config.window.bordered(), }, mapping = cmp.mapping.preset.insert({ - [''] = cmp.mapping.scroll_docs(-4), - [''] = cmp.mapping.scroll_docs(4), - [''] = cmp.mapping.complete(), - [''] = cmp.mapping.abort(), + [""] = cmp.mapping.scroll_docs(-4), + [""] = cmp.mapping.scroll_docs(4), + [""] = cmp.mapping.complete(), + [""] = cmp.mapping.abort(), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items. - [''] = cmp.mapping.confirm({ select = true }), + [""] = cmp.mapping.confirm({ select = true }), }), sources = cmp.config.sources({ - { name = 'nvim_lsp' }, - { name = 'luasnip' }, - { name = 'path' }, - { name = 'buffer' }, - }) + { name = "nvim_lsp" }, + { name = "luasnip" }, + { name = "path" }, + { name = "buffer" }, + }), }) --cmd [[autocmd FileType *\(TelescopePrompt\)\@' - end, {expr=true}) + vim.keymap.set("n", "]c", function() + if vim.wo.diff then + return "]c" + end + vim.schedule(function() + gs.next_hunk() + end) + return "" + end, { expr = true }) - vim.keymap.set('n', '[c', function() - if vim.wo.diff then return '[c' end - vim.schedule(function() gs.prev_hunk() end) - return '' - end, {expr=true}) + vim.keymap.set("n", "[c", function() + if vim.wo.diff then + return "[c" + end + vim.schedule(function() + gs.prev_hunk() + end) + return "" + end, { expr = true }) -- Actions - vim.keymap.set({'n', 'v'}, 'hs', ':Gitsigns stage_hunk') - vim.keymap.set({'n', 'v'}, 'hr', ':Gitsigns reset_hunk') - vim.keymap.set('n', 'hS', gs.stage_buffer) - vim.keymap.set('n', 'hu', gs.undo_stage_hunk) - vim.keymap.set('n', 'hR', gs.reset_buffer) - vim.keymap.set('n', 'hp', gs.preview_hunk) - vim.keymap.set('n', 'hb', function() gs.blame_line{full=true} end) - vim.keymap.set('n', 'tb', gs.toggle_current_line_blame) - vim.keymap.set('n', 'hd', gs.diffthis) - vim.keymap.set('n', 'hD', function() gs.diffthis('~') end) - vim.keymap.set('n', 'td', gs.toggle_deleted) + vim.keymap.set({ "n", "v" }, "hs", ":Gitsigns stage_hunk") + vim.keymap.set({ "n", "v" }, "hr", ":Gitsigns reset_hunk") + vim.keymap.set("n", "hS", gs.stage_buffer) + vim.keymap.set("n", "hu", gs.undo_stage_hunk) + vim.keymap.set("n", "hR", gs.reset_buffer) + vim.keymap.set("n", "hp", gs.preview_hunk) + vim.keymap.set("n", "hb", function() + gs.blame_line({ full = true }) + end) + vim.keymap.set("n", "tb", gs.toggle_current_line_blame) + vim.keymap.set("n", "hd", gs.diffthis) + vim.keymap.set("n", "hD", function() + gs.diffthis("~") + end) + vim.keymap.set("n", "td", gs.toggle_deleted) -- Text object - vim.keymap.set({'o', 'x'}, 'ih', ':Gitsigns select_hunk') - end -} + vim.keymap.set({ "o", "x" }, "ih", ":Gitsigns select_hunk") + end, +}) ---- Comment.nvim -require('Comment').setup() +require("Comment").setup() ---- vim-markdown g.vim_markdown_no_default_key_mappings = 1 g.vim_markdown_folding_disabled = 1 g.vim_markdown_toml_frontmatter = 1 ---- Telescope -local telescope = require 'telescope' -telescope.setup{ +local telescope = require("telescope") +telescope.setup({ defaults = { - file_ignore_patterns = {"%.avif", "%.jpg", "%.pdf", "%.png", "%.webp"}, + file_ignore_patterns = { "%.avif", "%.jpg", "%.pdf", "%.png", "%.webp" }, }, pickers = { find_files = { hidden = true, - } - } -} -telescope.load_extension('fzy_native') -telescope.load_extension('luasnip') -local builtin = require('telescope.builtin') -vim.keymap.set('n', 'f', builtin.fd) -vim.keymap.set('n', 'b', builtin.buffers) -vim.keymap.set('n', '/', builtin.current_buffer_fuzzy_find) -vim.keymap.set('n', 'g', builtin.live_grep) -vim.keymap.set('n', 'cg', builtin.grep_string) -vim.keymap.set('n', ':', builtin.commands) -vim.keymap.set('n', 's', telescope.extensions.luasnip.luasnip) + }, + }, +}) +telescope.load_extension("fzy_native") +telescope.load_extension("luasnip") +local builtin = require("telescope.builtin") +vim.keymap.set("n", "f", builtin.fd) +vim.keymap.set("n", "b", builtin.buffers) +vim.keymap.set("n", "/", builtin.current_buffer_fuzzy_find) +vim.keymap.set("n", "g", builtin.live_grep) +vim.keymap.set("n", "cg", builtin.grep_string) +vim.keymap.set("n", ":", builtin.commands) +vim.keymap.set("n", "s", telescope.extensions.luasnip.luasnip) ---- nvim-dap -local dap = require('dap') -vim.fn.sign_define('DapBreakpoint',{ text ='🟥', texthl ='', linehl ='', numhl =''}) -vim.fn.sign_define('DapStopped',{ text ='▶️', texthl ='', linehl ='', numhl =''}) +local dap = require("dap") +vim.fn.sign_define("DapBreakpoint", { text = "🟥", texthl = "", linehl = "", numhl = "" }) +vim.fn.sign_define("DapStopped", { text = "▶️", texthl = "", linehl = "", numhl = "" }) -- Set keymaps to control the debugge -vim.keymap.set('n', 'dc', require 'dap'.continue) -vim.keymap.set('n', 'do', require 'dap'.step_over) -vim.keymap.set('n', 'di', require 'dap'.step_into) -vim.keymap.set('n', 'dO', require 'dap'.step_out) -vim.keymap.set('n', 'db', require 'dap'.toggle_breakpoint) -vim.keymap.set('n', 'dB', function() - require 'dap'.set_breakpoint(vim.fn.input('Breakpoint condition: ')) +vim.keymap.set("n", "dc", require("dap").continue) +vim.keymap.set("n", "do", require("dap").step_over) +vim.keymap.set("n", "di", require("dap").step_into) +vim.keymap.set("n", "dO", require("dap").step_out) +vim.keymap.set("n", "db", require("dap").toggle_breakpoint) +vim.keymap.set("n", "dB", function() + require("dap").set_breakpoint(vim.fn.input("Breakpoint condition: ")) end) -local dapui = require('dapui') -dap.listeners.after.event_initialized["dapui_config"]=function() +local dapui = require("dapui") +dap.listeners.after.event_initialized["dapui_config"] = function() dapui.open() end -dap.listeners.before.event_terminated["dapui_config"]=function() +dap.listeners.before.event_terminated["dapui_config"] = function() dapui.close() end -dap.listeners.before.event_exited["dapui_config"]=function() +dap.listeners.before.event_exited["dapui_config"] = function() dapui.close() end -- nvim-dap-go -require('dap-go').setup() +require("dap-go").setup() ---- web-devicons -require('nvim-web-devicons').setup() +require("nvim-web-devicons").setup() diff --git a/luasnippets/all.lua b/luasnippets/all.lua index 012a151..fdb9a0c 100644 --- a/luasnippets/all.lua +++ b/luasnippets/all.lua @@ -8,7 +8,9 @@ local func = ls.function_node local choice = ls.choice_node local dynamicn = ls.dynamic_node -local date = function() return {os.date('%Y-%m-%d')} end +local date = function() + return { os.date("%Y-%m-%d") } +end ls.add_snippets(nil, { all = { @@ -21,4 +23,3 @@ ls.add_snippets(nil, { }), }, }) - diff --git a/luasnippets/markdown.lua b/luasnippets/markdown.lua index d6ce40f..8408e0d 100644 --- a/luasnippets/markdown.lua +++ b/luasnippets/markdown.lua @@ -15,17 +15,14 @@ ls.add_snippets(nil, { { trig = "link", namr = "markdown_link", - dscr = "Create markdown link [txt](url)" + dscr = "Create markdown link [txt](url)", }, - fmt( - "[{txt}]({url})", - { - txt = insert(1), - url = func(function(_, snip) - return snip.env.TM_SELECTED_TEXT[1] or {} - end, {}), - } - ) + fmt("[{txt}]({url})", { + txt = insert(1), + url = func(function(_, snip) + return snip.env.TM_SELECTED_TEXT[1] or {} + end, {}), + }) ), }, }) diff --git a/luasnippets/terraform.lua b/luasnippets/terraform.lua index 1a01311..cb5439d 100644 --- a/luasnippets/terraform.lua +++ b/luasnippets/terraform.lua @@ -8,7 +8,9 @@ local func = ls.function_node local choice = ls.choice_node local dynamicn = ls.dynamic_node -local date = function() return {os.date('%Y-%m-%d')} end +local date = function() + return { os.date("%Y-%m-%d") } +end ls.add_snippets(nil, { terraform = { @@ -16,17 +18,15 @@ ls.add_snippets(nil, { trig = "prov", namr = "AWS provider", dscr = "AWS provider to be included in the `terraform` section", - }, - { + }, { text({ "required_providers {", " aws = {", - " source = \"hashicorp/aws\"", - " version = \"~> 4.0\"", + ' source = "hashicorp/aws"', + ' version = "~> 4.0"', " }", "}", }), - }) + }), }, }) -