diff --git a/.config/nvim/init.lua b/.config/nvim/init.lua index ee63e88..4d8d311 100644 --- a/.config/nvim/init.lua +++ b/.config/nvim/init.lua @@ -28,8 +28,10 @@ opt("inccommand", "split") opt("updatetime", 100) opt("mouse", "a") +vim.g.mapleader = " " + require("plugins") require("mappings") require("treesitter") -require("lsp") require("completion") +require("lsp") diff --git a/.config/nvim/lua/completion.lua b/.config/nvim/lua/completion.lua index 2bc4326..9455cb7 100644 --- a/.config/nvim/lua/completion.lua +++ b/.config/nvim/lua/completion.lua @@ -1,31 +1,3 @@ --- nvim-cmp -local cmp = require("cmp") - -cmp.setup { - completion = { - autocomplete = false - }, - snippet = { - expand = function(args) - require("luasnip").lsp_expand(args.body) - end, - }, - mapping = { - [''] = cmp.mapping(cmp.mapping.scroll_docs(-4), { 'i', 'c' }), - [''] = cmp.mapping(cmp.mapping.scroll_docs(4), { 'i', 'c' }), - [''] = cmp.mapping(cmp.mapping.complete(), { 'i', 'c' }), - [''] = cmp.config.disable, -- Specify `cmp.config.disable` if you want to remove the default `` mapping. - [''] = cmp.mapping({ - i = cmp.mapping.abort(), - c = cmp.mapping.close(), - }), - [''] = cmp.mapping.confirm({ select = true }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items. - }, - sources = cmp.config.sources { - { name = "nvim_lsp" }, - { name = "nvim_lua" }, - { name = "luasnip" }, - { name = "buffer" }, - { name = "path" } - } -} +vim.g.coq_settings = {auto_start = true} +local coq = require('coq') +vim.cmd('COQnow') diff --git a/.config/nvim/lua/lsp.lua b/.config/nvim/lua/lsp.lua index e172ecd..3852f92 100644 --- a/.config/nvim/lua/lsp.lua +++ b/.config/nvim/lua/lsp.lua @@ -1,30 +1,40 @@ local lspconfig = require('lspconfig') -local opts = { noremap = true, silent = true } local on_attach = function(client, bufnr) + local opts = { noremap = true, silent = true } + + local function key(mode, keys, cmd) + vim.api.nvim_buf_set_keymap(bufnr, mode, keys, cmd, opts) + end + + local function opt(...) + vim.api.nvim_buf_set_option(bufnr, ...) + end + -- Enable completion - vim.api.nvim_buf_set_option(bufnr, 'omnifunc') + opt('omnifunc', 'v:lua.vim.lsp.omnifunc') -- Mappings - vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gD', 'lua vim.lsp.buf.declaration()', opts) - vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gd', 'lua vim.lsp.buf.definition()', opts) - vim.api.nvim_buf_set_keymap(bufnr, 'n', 'K', 'lua vim.lsp.buf.hover()', opts) - vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gi', 'lua vim.lsp.buf.implementation()', opts) - vim.api.nvim_buf_set_keymap(bufnr, 'n', '', 'lua vim.lsp.buf.signature_help()', opts) - vim.api.nvim_buf_set_keymap(bufnr, 'n', 'wa', 'lua vim.lsp.buf.add_workspace_folder()', opts) - vim.api.nvim_buf_set_keymap(bufnr, 'n', 'wr', 'lua vim.lsp.buf.remove_workspace_folder()', opts) - vim.api.nvim_buf_set_keymap(bufnr, 'n', 'wl', 'lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))', opts) - vim.api.nvim_buf_set_keymap(bufnr, 'n', 'D', 'lua vim.lsp.buf.type_definition()', opts) - vim.api.nvim_buf_set_keymap(bufnr, 'n', 'rn', 'lua vim.lsp.buf.rename()', opts) - vim.api.nvim_buf_set_keymap(bufnr, 'n', 'ca', 'lua vim.lsp.buf.code_action()', opts) - vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gr', 'lua vim.lsp.buf.references()', opts) - vim.api.nvim_buf_set_keymap(bufnr, 'n', 'f', 'lua vim.lsp.buf.formatting()', opts) + key('n', 'cD', 'lua vim.lsp.buf.declaration()') + key('n', 'cd', 'lua vim.lsp.buf.definition()') + key('n', 'ch', 'lua vim.lsp.buf.hover()') + key('n', 'ci', 'lua vim.lsp.buf.implementation()') + key('n', 'sh', 'lua vim.lsp.buf.signature_help()') + key('n', 'wa', 'lua vim.lsp.buf.add_workspace_folder()') + key('n', 'wr', 'lua vim.lsp.buf.remove_workspace_folder()') + key('n', 'wl', 'lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))') + key('n', 'D', 'lua vim.lsp.buf.type_definition()') + key('n', 'rn', 'lua vim.lsp.buf.rename()') + key('n', 'ca', 'lua vim.lsp.buf.code_action()') + key('n', 'cr', 'lua vim.lsp.buf.references()') + key('n', 'f', 'lua vim.lsp.buf.formatting()') + key('n', 'cs', 'lua vim.diagnostic.open_float()') end -local capabilities = require("cmp_nvim_lsp").update_capabilities(vim.lsp.protocol.make_client_capabilities()) +local coq = require('coq') -lspconfig.ccls.setup { +lspconfig.ccls.setup(coq.lsp_ensure_capabilities{ on_attach = on_attach, capabilities = capabilities, init_options = { @@ -32,9 +42,9 @@ lspconfig.ccls.setup { directory = vim.fn.expand("$HOME/.cache/ccls/") } } -} +}) -lspconfig.rust_analyzer.setup { +lspconfig.rust_analyzer.setup(coq.lsp_ensure_capabilities{ on_attach = on_attach, capabilities = capabilities, settings = { @@ -49,22 +59,24 @@ lspconfig.rust_analyzer.setup { } } } -} +}) lspconfig.tsserver.setup { on_attach = on_attach, capabilities = capabilities } +lspconfig.tsserver.setup(coq.lsp_ensure_capabilities()) -lspconfig.java_language_server.setup { +lspconfig.java_language_server.setup(coq.lsp_ensure_capabilities{ on_attach = on_attach, capabilities = capabilities, cmd = { "/usr/share/java/java-language-server/lang_server_linux.sh" } -} +}) lspconfig.vuels.setup { on_attach = on_attach, capabilities = capabilities } +lspconfig.vuels.setup(coq.lsp_ensure_capabilities()) lspconfig.racket_langserver.setup {} diff --git a/.config/nvim/lua/mappings.lua b/.config/nvim/lua/mappings.lua index 442bf47..daaf791 100644 --- a/.config/nvim/lua/mappings.lua +++ b/.config/nvim/lua/mappings.lua @@ -1 +1,22 @@ -vim.g.mapleader = "" +-- map the key (sequence) to a command +local function map(mode, lhs, rhs, opts) + local options = { noremap = true } + if opts then + options = vim.tbl_extend("force", options, opts) + end + vim.api.nvim_set_keymap(mode, lhs, rhs, options) +end + +-- open terminal +map("n", "ot", ":ToggleTerm") + +-- exit terminal mode +map("t", "", "") + +-- open tree +map("n", "op", ":NvimTreeToggle") + +-- telescope +map("n", "to", ":Telescope") +map("n", "tf", ":Telescope find_files") +map("n", "tg", ":Telescope live_grep") diff --git a/.config/nvim/lua/plugins.lua b/.config/nvim/lua/plugins.lua index 777dd51..18fee27 100644 --- a/.config/nvim/lua/plugins.lua +++ b/.config/nvim/lua/plugins.lua @@ -12,6 +12,7 @@ packer.startup(function() use("nvim-treesitter/nvim-treesitter") use("neovim/nvim-lspconfig") use("j-hui/fidget.nvim") + use("onsails/lspkind-nvim") -- ui use("ayu-theme/ayu-vim") @@ -24,13 +25,11 @@ packer.startup(function() use("akinsho/toggleterm.nvim") -- completion - use("hrsh7th/nvim-cmp") - use("hrsh7th/cmp-path") - use("hrsh7th/cmp-buffer") - use("hrsh7th/cmp-nvim-lsp") - use("hrsh7th/cmp-nvim-lua") - use("L3MON4D3/LuaSnip") - use("saadparwaiz1/cmp_luasnip") + use{"ms-jpq/coq_nvim",branch='coq'} + + -- misc + use("davidgranstrom/nvim-markdown-preview") + use("folke/todo-comments.nvim") if packer_bootstrap then require('packer').sync() @@ -84,7 +83,7 @@ require('nvim-web-devicons').setup {} -- nvim-tree require('nvim-tree').setup { view = { - width = 25, + width = 35, signcolumn = "no", }, diagnostics = { @@ -106,5 +105,13 @@ require('lualine').setup { -- toggleterm require('toggleterm').setup { - open_mapping = [[ot]] + open_mapping = nil } + +-- markdown preview +vim.cmd[[ + let g:mkdp_browser = 'surf' +]] + +-- todo-comments +require('todo-comments').setup {}