diff options
Diffstat (limited to 'store/home/config/nvim/lua/setup/plugins')
-rw-r--r-- | store/home/config/nvim/lua/setup/plugins/cmp.lua | 33 | ||||
-rw-r--r-- | store/home/config/nvim/lua/setup/plugins/gitsigns.lua | 40 | ||||
-rw-r--r-- | store/home/config/nvim/lua/setup/plugins/init.lua | 14 | ||||
-rw-r--r-- | store/home/config/nvim/lua/setup/plugins/lint.lua | 80 | ||||
-rw-r--r-- | store/home/config/nvim/lua/setup/plugins/telescope.lua | 11 |
5 files changed, 178 insertions, 0 deletions
diff --git a/store/home/config/nvim/lua/setup/plugins/cmp.lua b/store/home/config/nvim/lua/setup/plugins/cmp.lua new file mode 100644 index 0000000..c977943 --- /dev/null +++ b/store/home/config/nvim/lua/setup/plugins/cmp.lua @@ -0,0 +1,33 @@ +local function setup() + local cmp = require("cmp") + + cmp.setup { + snippet = { + expand = function(args) + vim.snippet.expand(args.body) + end, + }, + window = { + completion = cmp.config.window.bordered(), + documentation = cmp.config.window.bordered(), + }, + mapping = cmp.mapping.preset.insert({ + ['<C-b>'] = cmp.mapping.scroll_docs(-4), + ['<C-f>'] = cmp.mapping.scroll_docs(4), + ['<C-j>'] = cmp.mapping.select_next_item({ behavior = cmp.SelectBehavior.Select }), + ['<C-k>'] = cmp.mapping.select_prev_item({ behavior = cmp.SelectBehavior.Select }), + ['<C-y>'] = cmp.mapping.confirm({ select = true }), + ['<CR>'] = cmp.mapping.confirm({ select = true }), + }), + sources = cmp.config.sources({ + { name = 'nvim_lsp' }, + { name = 'path' }, + }, { + { name = 'buffer' }, + }) + } +end + +return { + setup = setup +} diff --git a/store/home/config/nvim/lua/setup/plugins/gitsigns.lua b/store/home/config/nvim/lua/setup/plugins/gitsigns.lua new file mode 100644 index 0000000..957c661 --- /dev/null +++ b/store/home/config/nvim/lua/setup/plugins/gitsigns.lua @@ -0,0 +1,40 @@ +local function setup() + local gitsigns = require('gitsigns') + + gitsigns.setup { + on_attach = function(bufnr) + local function map(mode, l, r, opts) + opts = opts or {} + opts.buffer = bufnr + vim.keymap.set(mode, l, r, opts) + end + + -- Navigation + map('n', ']c', function() + if vim.wo.diff then + vim.cmd.normal({ ']c', bang = true }) + else + gitsigns.nav_hunk('next') + end + end) + + map('n', '[c', function() + if vim.wo.diff then + vim.cmd.normal({ '[c', bang = true }) + else + gitsigns.nav_hunk('prev') + end + end) + + -- Actions + map('n', '<leader>gc', gitsigns.preview_hunk) + map('n', '<leader>gt', gitsigns.toggle_deleted) + map('n', '<leader>gd', gitsigns.diffthis) + map('n', '<leader>gb', function() gitsigns.blame_line { full = true } end) + end + } +end + +return { + setup = setup +} diff --git a/store/home/config/nvim/lua/setup/plugins/init.lua b/store/home/config/nvim/lua/setup/plugins/init.lua new file mode 100644 index 0000000..0e2a839 --- /dev/null +++ b/store/home/config/nvim/lua/setup/plugins/init.lua @@ -0,0 +1,14 @@ +local function setup() + require("setup.plugins.lint").setup() + require("setup.plugins.cmp").setup() + require("setup.plugins.telescope").setup() + require("setup.plugins.gitsigns").setup() + + require('lualine').setup {} + require("nvim-tree").setup {} + require("nvim-autopairs").setup {} +end + +return { + setup = setup +} diff --git a/store/home/config/nvim/lua/setup/plugins/lint.lua b/store/home/config/nvim/lua/setup/plugins/lint.lua new file mode 100644 index 0000000..688e5ca --- /dev/null +++ b/store/home/config/nvim/lua/setup/plugins/lint.lua @@ -0,0 +1,80 @@ +local lint = require("lint") + +local cspell = { + name = "cspell", + config_patterns = { + ".cspell.json", + "cspell.json", + ".cSpell.json", + "cSpell.json", + "cspell.config.js", + "cspell.config.cjs", + "cspell.config.json", + "cspell.config.yaml", + "cspell.config.yml", + "cspell.yaml", + "cspell.yml", + }, + fast = true, +} + +local linters = { cspell } + +local linter_names = vim.tbl_map(function(l) return l.name end, linters) + +local function cru_lint(linter, opt) + opt = opt or {} + + if not opt.buf then + opt.buf = 0 + end + + if 0 ~= #vim.fs.find(linter.config_patterns, { + path = vim.api.nvim_buf_get_name(opt.buf), upward = true }) then + lint.try_lint(linter.name) + end +end + +local function cru_lint_one(name, opt) + for _, linter in ipairs(linters) do + if linter.name == name then + cru_lint(linter, opt) + return + end + end + vim.notify("No linter named " .. name .. " is configured.", vim.log.levels.ERROR, {}) +end + +local function cru_lint_all(opt, fast) + for _, linter in ipairs(linters) do + if not fast or linter.fast then + cru_lint(linter, opt) + end + end +end + +local function cru_lint_all_fast(opt) + local buf = opt.buf + if vim.api.nvim_get_option_value("buftype", { buf = buf }) == "" then + cru_lint_all(opt, true) + end +end + +local function setup() + vim.api.nvim_create_autocmd({ "BufReadPost", "InsertLeave", "TextChanged" }, { callback = cru_lint_all_fast }) + + local function cru_lint_cmd(opt) + if #opt.args == 0 then + cru_lint_all(opt, false) + else + cru_lint_one(opt.args, opt) + end + end + + vim.api.nvim_create_user_command("CruLint", cru_lint_cmd, + { nargs = '?', complete = function() return linter_names end }) +end + +return { + setup = setup, +} diff --git a/store/home/config/nvim/lua/setup/plugins/telescope.lua b/store/home/config/nvim/lua/setup/plugins/telescope.lua new file mode 100644 index 0000000..d68b7f2 --- /dev/null +++ b/store/home/config/nvim/lua/setup/plugins/telescope.lua @@ -0,0 +1,11 @@ +local function setup() + local builtin = require('telescope.builtin') + vim.keymap.set('n', '<leader>ff', builtin.find_files, {}) + vim.keymap.set('n', '<leader>fg', builtin.live_grep, {}) + vim.keymap.set('n', '<leader>fb', builtin.buffers, {}) + vim.keymap.set('n', '<leader>fh', builtin.help_tags, {}) +end + +return { + setup = setup +} |