diff --git a/init.lua b/init.lua index f58cc19..c3abf23 100644 --- a/init.lua +++ b/init.lua @@ -16,7 +16,3 @@ require('normal.normal') -- require('Plugin.lualine') -- require('Plugin.Imchange') -- require('Plugin.NERDTree') - - - - diff --git a/install b/install index 1131162..1ab2f6c 100755 --- a/install +++ b/install @@ -9,7 +9,7 @@ if [ -f /etc/lsb-release ]; then # 安装nodejs(lsp 用得到) - curl -sL https://deb.nodesource.com/setup_lts.x | bash - + curl -sL https://deb.nodesource.com/setup_18.x | bash - apt update && apt upgrade -y && apt install nodejs -y else diff --git a/lua/G.lua b/lua/G.lua index 15e398f..403e64b 100644 --- a/lua/G.lua +++ b/lua/G.lua @@ -8,6 +8,8 @@ G.api = vim.api G.opt = vim.opt G.loop = vim.loop G.lb = vim.lsp.buf +G.dic = vim.diagnostic +G.cgp = vim.nvim_create_augroup function G.map(maps) for _,map in pairs(maps) do diff --git a/lua/neovim/options.lua b/lua/neovim/options.lua index 87fece1..84e58e6 100644 --- a/lua/neovim/options.lua +++ b/lua/neovim/options.lua @@ -1,5 +1,3 @@ -local G = require('G') - -- 主题 G.cmd("colorscheme nord") diff --git a/lua/neovim/plug.lua b/lua/neovim/plug.lua index e317f0b..48cf2fd 100644 --- a/lua/neovim/plug.lua +++ b/lua/neovim/plug.lua @@ -7,9 +7,9 @@ return { 'shaunsingh/nord.nvim', -- 主题插件 + require('neovim.plugsettings.coc'), -- coc require('neovim.plugsettings.lualine'), -- lualine require('neovim.plugsettings.nvimtree'), -- nvimtree - require('neovim.plugsettings.lspconfig'), -- lspconfig require('neovim.plugsettings.treesitter'), -- treesitter -- nerdtree diff --git a/lua/neovim/plugsettings/coc.lua b/lua/neovim/plugsettings/coc.lua new file mode 100644 index 0000000..a0132a2 --- /dev/null +++ b/lua/neovim/plugsettings/coc.lua @@ -0,0 +1,167 @@ +return { + { + 'neoclide/coc.nvim', + config = function() + + + G.opt.backup = false + G.opt.writebackup = false + G.opt.updatetime = 300 + G.opt.signcolumn = "yes" + G.g.coc_global_extensions = { + 'coc-pyright', + 'coc-java', + + 'coc-lists', + 'coc-pairs', + 'coc-marketplace', + + } + + local opts = { + silent = true, + noremap = true, + expr = true, + replace_keycodes = false + } + + G.map({ + + { "i", "", 'coc#pum#visible() ? coc#pum#next(1) : v:lua.check_back_space() ? "" : coc#refresh()', opts }, + { "i", "", [[coc#pum#visible() ? coc#pum#prev(1) : "\"]], opts }, + { "i", "", [[coc#pum#visible() ? coc#pum#confirm() : "\u\\=coc#on_enter()\"]], opts }, + + { "n", "gd", "(coc-definition)", {silent = true} }, + { "n", "gy", "(coc-type-definition)", {silent = true} }, + { "n", "gi", "(coc-implementation)", {silent = true} }, + { "n", "gr", "(coc-references)", {silent = true} }, + { "n", "rn", "(coc-rename)", {silent = true} }, + + { "x", "", "(coc-format-selected)", {silent = true} }, + { "n", "", "(coc-format-selected)", {silent = true} }, + + }) + local keyset = vim.keymap.set + + + function _G.check_back_space() + local col = G.fn.col('.') - 1 + return col == 0 or vim.fn.getline('.'):sub(col, col):match('%s') ~= nil + end + + keyset("n", "[g", "(coc-diagnostic-prev)", {silent = true}) + keyset("n", "]g", "(coc-diagnostic-next)", {silent = true}) + + vim.api.nvim_create_augroup("CocGroup", {}) + vim.api.nvim_create_autocmd("CursorHold", { + group = "CocGroup", + command = "silent call CocActionAsync('highlight')", + desc = "Highlight symbol under cursor on CursorHold" + }) + + + vim.api.nvim_create_autocmd("FileType", { + group = "CocGroup", + pattern = "typescript,json", + command = "setl formatexpr=CocAction('formatSelected')", + desc = "Setup formatexpr specified filetype(s)." + }) + + -- Update signature help on jump placeholder + vim.api.nvim_create_autocmd("User", { + group = "CocGroup", + pattern = "CocJumpPlaceholder", + command = "call CocActionAsync('showSignatureHelp')", + desc = "Update signature help on jump placeholder" + }) + + -- Apply codeAction to the selected region + -- Example: `aap` for current paragraph + local opts = {silent = true, nowait = true} + keyset("x", "a", "(coc-codeaction-selected)", opts) + keyset("n", "a", "(coc-codeaction-selected)", opts) + + -- Remap keys for apply code actions at the cursor position. + keyset("n", "ac", "(coc-codeaction-cursor)", opts) + -- Remap keys for apply source code actions for current file. + keyset("n", "as", "(coc-codeaction-source)", opts) + -- Apply the most preferred quickfix action on the current line. + keyset("n", "qf", "(coc-fix-current)", opts) + + -- Remap keys for apply refactor code actions. + keyset("n", "re", "(coc-codeaction-refactor)", { silent = true }) + keyset("x", "r", "(coc-codeaction-refactor-selected)", { silent = true }) + keyset("n", "r", "(coc-codeaction-refactor-selected)", { silent = true }) + + -- Run the Code Lens actions on the current line + keyset("n", "cl", "(coc-codelens-action)", opts) + + + -- Map function and class text objects + -- NOTE: Requires 'textDocument.documentSymbol' support from the language server + keyset("x", "if", "(coc-funcobj-i)", opts) + keyset("o", "if", "(coc-funcobj-i)", opts) + keyset("x", "af", "(coc-funcobj-a)", opts) + keyset("o", "af", "(coc-funcobj-a)", opts) + keyset("x", "ic", "(coc-classobj-i)", opts) + keyset("o", "ic", "(coc-classobj-i)", opts) + keyset("x", "ac", "(coc-classobj-a)", opts) + keyset("o", "ac", "(coc-classobj-a)", opts) + + + -- Remap and to scroll float windows/popups + ---@diagnostic disable-next-line: redefined-local + local opts = {silent = true, nowait = true, expr = true} + keyset("n", "", 'coc#float#has_scroll() ? coc#float#scroll(1) : ""', opts) + keyset("n", "", 'coc#float#has_scroll() ? coc#float#scroll(0) : ""', opts) + keyset("i", "", + 'coc#float#has_scroll() ? "=coc#float#scroll(1)" : ""', opts) + keyset("i", "", + 'coc#float#has_scroll() ? "=coc#float#scroll(0)" : ""', opts) + keyset("v", "", 'coc#float#has_scroll() ? coc#float#scroll(1) : ""', opts) + keyset("v", "", 'coc#float#has_scroll() ? coc#float#scroll(0) : ""', opts) + + + -- Use CTRL-S for selections ranges + -- Requires 'textDocument/selectionRange' support of language server + keyset("n", "", "(coc-range-select)", {silent = true}) + keyset("x", "", "(coc-range-select)", {silent = true}) + + + -- Add `:Format` command to format current buffer + vim.api.nvim_create_user_command("Format", "call CocAction('format')", {}) + + -- " Add `:Fold` command to fold current buffer + vim.api.nvim_create_user_command("Fold", "call CocAction('fold', )", {nargs = '?'}) + + -- Add `:OR` command for organize imports of the current buffer + vim.api.nvim_create_user_command("OR", "call CocActionAsync('runCommand', 'editor.action.organizeImport')", {}) + + -- Add (Neo)Vim's native statusline support + -- NOTE: Please see `:h coc-status` for integrations with external plugins that + -- provide custom statusline: lightline.vim, vim-airline + vim.opt.statusline:prepend("%{coc#status()}%{get(b:,'coc_current_function','')}") + + -- Mappings for CoCList + -- code actions and coc stuff + ---@diagnostic disable-next-line: redefined-local + local opts = {silent = true, nowait = true} + -- Show all diagnostics + keyset("n", "a", ":CocList diagnostics", opts) + -- Manage extensions + keyset("n", "e", ":CocList extensions", opts) + -- Show commands + keyset("n", "c", ":CocList commands", opts) + -- Find symbol of current document + keyset("n", "o", ":CocList outline", opts) + -- Search workspace symbols + keyset("n", "s", ":CocList -I symbols", opts) + -- Do default action for next item + keyset("n", "j", ":CocNext", opts) + -- Do default action for previous item + keyset("n", "k", ":CocPrev", opts) + -- Resume latest coc list + keyset("n", "p", ":CocListResume", opts) + end, + }, +} diff --git a/lua/neovim/plugsettings/lspconfig.lua b/lua/neovim/plugsettings/lspconfig.lua deleted file mode 100644 index 4f4f63d..0000000 --- a/lua/neovim/plugsettings/lspconfig.lua +++ /dev/null @@ -1,52 +0,0 @@ -return { - { - 'neovim/nvim-lspconfig', - config = function() - local lsp = require('lspconfig') - lsp.pyright.setup({}) - -- lsp.lua_ls.setup{} - -- local opts = {buffer = ev.buf} - G.map({ - - -- G.lb = vim.lsp.buf - -- { 'n', 'gD', G.lb.declaration, opts}, - -- { 'n', 'gd', G.lb.definition, opts}, - -- { 'n', 'gi', G.lb.implementation, opts}, - - }) - end, - }, - { - 'hrsh7th/nvim-cmp', - dependencies = { - 'hrsh7th/cmp-cmdline', - 'hrsh7th/cmp-path', - 'hrsh7th/cmp-buffer', - 'hrsh7th/cmp-nvim-lsp', - }, - config = function() - require('cmp').setup{ - sources = require('cmp').config.sources({ - { name = 'nvim_lsp' }, - { name = 'buffer' }, - { name = 'path' } - }), - } - end, - }, - { - 'williamboman/mason.nvim', - config = function() - require("mason").setup({ - ui = { - icons = { - package_installed = "✓", - package_pending = "➜", - package_uninstalled = "✗" - } - } - }) - end, - }, - -} diff --git a/lua/normal/options.lua b/lua/normal/options.lua index 422de0e..42b59f8 100644 --- a/lua/normal/options.lua +++ b/lua/normal/options.lua @@ -1,5 +1,3 @@ -local G = require('G') - -- G.opt.ttimeout = true G.opt.ttimeoutlen = 100