diff options
| author | Yuqian Yang <crupest@crupest.life> | 2025-03-12 22:50:12 +0800 | 
|---|---|---|
| committer | Yuqian Yang <crupest@crupest.life> | 2025-03-12 22:50:12 +0800 | 
| commit | 3d9b0c38adf1b2afd89ef33bbe70cd4eb4c1d8e6 (patch) | |
| tree | 7d33fca9ba5af14e14cf0982eb7e6d0556ca12b0 /store/home/config/nvim/lua/setup/plugins | |
| parent | 9e635213f5a5145db7b31972050ab75f1aa19c15 (diff) | |
| download | crupest-3d9b0c38adf1b2afd89ef33bbe70cd4eb4c1d8e6.tar.gz crupest-3d9b0c38adf1b2afd89ef33bbe70cd4eb4c1d8e6.tar.bz2 crupest-3d9b0c38adf1b2afd89ef33bbe70cd4eb4c1d8e6.zip  | |
feat(nvim): improve configs a lot.
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 +}  | 
