From c51520da989e5658d04c2dc7ca163f63d20b1a13 Mon Sep 17 00:00:00 2001 From: Cryxtalix Date: Wed, 13 Nov 2024 04:47:34 +0800 Subject: Update --- .config/nvim/init.lua | 12 ++++++++ .config/nvim/lazy-lock.json | 6 +++- .config/nvim/lua/plugins/completions.lua | 53 ++++++++++++++++++++++++++++++++ .config/nvim/lua/plugins/lsp.lua | 48 +++++++++++++++++------------ .config/nvim/lua/plugins/none-ls.lua | 2 ++ .config/nvim/lua/plugins/nvim-dap.lua | 2 ++ .config/nvim/lua/plugins/theme.lua | 14 --------- .config/nvim/lua/plugins/treesitter.lua | 1 + 8 files changed, 104 insertions(+), 34 deletions(-) create mode 100644 .config/nvim/lua/plugins/completions.lua delete mode 100644 .config/nvim/lua/plugins/theme.lua (limited to '.config/nvim') diff --git a/.config/nvim/init.lua b/.config/nvim/init.lua index 20b144f..112ca25 100644 --- a/.config/nvim/init.lua +++ b/.config/nvim/init.lua @@ -15,6 +15,18 @@ vim.opt.wildmenu = true vim.cmd("filetype plugin on") vim.api.nvim_set_keymap('v', '', '"+y', { noremap = true, silent = true }) +-- Neovim builtin autocompletion +--vim.api.nvim_create_autocmd({ "VimEnter" }, { +-- callback = function() +-- local clients = vim.lsp.get_clients() +-- for _, client in ipairs(clients) do +-- local id = client.id +-- vim.lsp.completion.enable(true, id, 1, { autotrigger = true }) +-- return +-- end +-- end +--}) + -- Install Lazy.vim local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" if not vim.loop.fs_stat(lazypath) then diff --git a/.config/nvim/lazy-lock.json b/.config/nvim/lazy-lock.json index 282b316..c376235 100644 --- a/.config/nvim/lazy-lock.json +++ b/.config/nvim/lazy-lock.json @@ -1,7 +1,10 @@ { + "LuaSnip": { "branch": "master", "commit": "659c4479529a05cc9b05ef762639a09d366cc690" }, + "cmp-nvim-lsp": { "branch": "main", "commit": "39e2eda76828d88b773cc27a3f61d2ad782c922d" }, + "cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" }, + "friendly-snippets": { "branch": "main", "commit": "de8fce94985873666bd9712ea3e49ee17aadb1ed" }, "image.nvim": { "branch": "master", "commit": "88e9693e188b8464b1c426aebb4389fd9db2fcbf" }, "lazy.nvim": { "branch": "main", "commit": "1159bdccd8910a0fd0914b24d6c3d186689023d9" }, - "lualine.nvim": { "branch": "master", "commit": "b431d228b7bbcdaea818bdc3e25b8cdbe861f056" }, "markdown-toc": { "branch": "main", "commit": "1454bf3b4bcb855f7df41c59dfae08cc824141a0" }, "mason-lspconfig.nvim": { "branch": "main", "commit": "25c11854aa25558ee6c03432edfa0df0217324be" }, "mason.nvim": { "branch": "main", "commit": "e2f7f9044ec30067bc11800a9e266664b88cda22" }, @@ -9,6 +12,7 @@ "neo-tree.nvim": { "branch": "v3.x", "commit": "a77af2e764c5ed4038d27d1c463fa49cd4794e07" }, "none-ls.nvim": { "branch": "main", "commit": "6bdd9b3364e12ffb346ac224db3df37de0b1429b" }, "nui.nvim": { "branch": "main", "commit": "b58e2bfda5cea347c9d58b7f11cf3012c7b3953f" }, + "nvim-cmp": { "branch": "main", "commit": "f17d9b4394027ff4442b298398dfcaab97e40c4f" }, "nvim-dap": { "branch": "master", "commit": "7ff6936010b7222fea2caea0f67ed77f1b7c60dd" }, "nvim-dap-ui": { "branch": "master", "commit": "ffa89839f97bad360e78428d5c740fdad9a0ff02" }, "nvim-dap-virtual-text": { "branch": "master", "commit": "52638640ae309cacdaff785fdbb854437bd1ee5c" }, diff --git a/.config/nvim/lua/plugins/completions.lua b/.config/nvim/lua/plugins/completions.lua new file mode 100644 index 0000000..483fac7 --- /dev/null +++ b/.config/nvim/lua/plugins/completions.lua @@ -0,0 +1,53 @@ +-- Autocompletions +-- https://github.com/hrsh7th/nvim-cmp +-- https://github.com/L3MON4D3/LuaSnip +-- https://github.com/saadparwaiz1/cmp_luasnip +-- https://github.com/rafamadriz/friendly-snippets +-- https://github.com/hrsh7th/cmp-nvim-lsp + +return { + { + "hrsh7th/cmp-nvim-lsp", + }, + { + 'L3MON4D3/LuaSnip', + dependencies = { + 'saadparwaiz1/cmp_luasnip', + 'rafamadriz/friendly-snippets', + } + }, + { + "hrsh7th/nvim-cmp", + config = function() + local cmp = require'cmp' + require("luasnip.loaders.from_vscode").lazy_load() + + cmp.setup({ + snippet = { + expand = function(args) + require('luasnip').lsp_expand(args.body) + end, + }, + window = { + completion = cmp.config.window.bordered(), + 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.confirm({ select = true }), + [''] = cmp.mapping.select_next_item(), + [''] = cmp.mapping.select_prev_item(), + }), + sources = cmp.config.sources({ + { name = 'nvim_lsp' }, + { name = 'luasnip' }, + }, { + { name = 'buffer' }, + }) + }) + end, + } +} diff --git a/.config/nvim/lua/plugins/lsp.lua b/.config/nvim/lua/plugins/lsp.lua index ad6f420..0ddbbe9 100644 --- a/.config/nvim/lua/plugins/lsp.lua +++ b/.config/nvim/lua/plugins/lsp.lua @@ -1,3 +1,8 @@ +-- Language server for specified languages +-- Hover with 'K' +-- Goto definition with :Goto +-- Open code action with :Codeact + return { { "williamboman/mason.nvim", @@ -8,31 +13,36 @@ return { { "williamboman/mason-lspconfig.nvim", - config = function() - require("mason-lspconfig").setup({ - -- Add languages - ensure_installed = { - "bashls", - "clangd", - "lua_ls", - "marksman", - "pyright", - "rust_analyzer", - } - }) - end + lazy = false, + opts = { + auto_install = true, + }, }, { "neovim/nvim-lspconfig", config = function() + -- Advertise autocompletion to lsp + local capabilities = require('cmp_nvim_lsp').default_capabilities() local lspconfig = require("lspconfig") - lspconfig.bashls.setup({}) - lspconfig.lua_ls.setup({}) - lspconfig.clangd.setup({}) - lspconfig.marksman.setup({}) - lspconfig.pyright.setup({}) - lspconfig.rust_analyzer.setup({}) + lspconfig.bashls.setup({ + capabilities = capabilities + }) + lspconfig.lua_ls.setup({ + capabilities = capabilities + }) + lspconfig.clangd.setup({ + capabilities = capabilities + }) + lspconfig.marksman.setup({ + capabilities = capabilities + }) + lspconfig.pyright.setup({ + capabilities = capabilities + }) + lspconfig.rust_analyzer.setup({ + capabilities = capabilities + }) -- Key mapping -- Hover for definition diff --git a/.config/nvim/lua/plugins/none-ls.lua b/.config/nvim/lua/plugins/none-ls.lua index 3a912ae..79098a9 100644 --- a/.config/nvim/lua/plugins/none-ls.lua +++ b/.config/nvim/lua/plugins/none-ls.lua @@ -1,4 +1,6 @@ +-- Formatter -- https://github.com/nvimtools/none-ls.nvim +-- Press '=' to format highlighted code return { "nvimtools/none-ls.nvim", config = function() diff --git a/.config/nvim/lua/plugins/nvim-dap.lua b/.config/nvim/lua/plugins/nvim-dap.lua index 7720526..5a6d1ae 100644 --- a/.config/nvim/lua/plugins/nvim-dap.lua +++ b/.config/nvim/lua/plugins/nvim-dap.lua @@ -1,3 +1,5 @@ +-- Debugger +-- https://github.com/mfussenegger/nvim-dap return { "mfussenegger/nvim-dap", event = "BufRead", diff --git a/.config/nvim/lua/plugins/theme.lua b/.config/nvim/lua/plugins/theme.lua deleted file mode 100644 index 985e70b..0000000 --- a/.config/nvim/lua/plugins/theme.lua +++ /dev/null @@ -1,14 +0,0 @@ -return { - { - -- Bottom bar theme - -- https://github.com/nvim-lualine/lualine.nvim - "nvim-lualine/lualine.nvim", - config = function() - require('lualine').setup({ - options = { - theme = 'jellybeans' - } - }) - end - } -} diff --git a/.config/nvim/lua/plugins/treesitter.lua b/.config/nvim/lua/plugins/treesitter.lua index 778f5a0..f04198f 100644 --- a/.config/nvim/lua/plugins/treesitter.lua +++ b/.config/nvim/lua/plugins/treesitter.lua @@ -1,3 +1,4 @@ +-- Syntax highlighting -- https://github.com/nvim-treesitter/nvim-treesitter return { "nvim-treesitter/nvim-treesitter", -- cgit