aboutsummaryrefslogtreecommitdiff
path: root/store/home/config/nvim/lua/setup/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'store/home/config/nvim/lua/setup/plugins')
-rw-r--r--store/home/config/nvim/lua/setup/plugins/cmp.lua33
-rw-r--r--store/home/config/nvim/lua/setup/plugins/gitsigns.lua40
-rw-r--r--store/home/config/nvim/lua/setup/plugins/init.lua14
-rw-r--r--store/home/config/nvim/lua/setup/plugins/lint.lua80
-rw-r--r--store/home/config/nvim/lua/setup/plugins/telescope.lua11
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
+}