diff --git a/dot_config/nvim/lua/config/cmp.lua b/dot_config/nvim/lua/config/cmp.lua index 6a552de..2b71cfd 100644 --- a/dot_config/nvim/lua/config/cmp.lua +++ b/dot_config/nvim/lua/config/cmp.lua @@ -37,8 +37,8 @@ cmp.setup({ }), sources = cmp.config.sources({ { name = 'nvim_lsp' }, - -- { name = 'vsnip' }, -- For vsnip users. { name = 'luasnip' }, -- For luasnip users. + -- { name = 'vsnip' }, -- For vsnip users. -- { name = 'ultisnips' }, -- For ultisnips users. -- { name = 'snippy' }, -- For snippy users. }, { diff --git a/dot_config/nvim/lua/config/lspconfig.lua b/dot_config/nvim/lua/config/lspconfig.lua index 2e2e59e..e9ccb01 100644 --- a/dot_config/nvim/lua/config/lspconfig.lua +++ b/dot_config/nvim/lua/config/lspconfig.lua @@ -27,21 +27,31 @@ end local capabilities = require('cmp_nvim_lsp').default_capabilities() -- Comes with clang -require'lspconfig'.clangd.setup{on_attach = on_attach, capabilities = capabilities} +vim.lsp.config('clangd', { + on_attach = on_attach, + capabilities = capabilities +}) +vim.lsp.enable('clangd') + -- NPM: dockerfile-language-server-nodejs -require'lspconfig'.dockerls.setup{capabilities = capabilities} +-- vim.lsp.config('dockerls', { +-- capabilities = capabilities +-- }) +-- vim.lsp.enable('dockerls') + -- Pacman: haskell-language-server -- AUR: haskell-language-server-bin -- GH: https://github.com/haskell/haskell-language-server -require'lspconfig'.hls.setup{ - on_attach = on_attach, - settings = { - haskell = { - formattingProvider = "stylish-haskell" - } - }, - capabilities = capabilities -} +-- vim.lsp.config('hls', { +-- on_attach = on_attach, +-- settings = { +-- haskell = { +-- formattingProvider = "stylish-haskell" +-- } +-- }, +-- capabilities = capabilities +-- }) + -- Pacman: vieter-vls (requires my Vieter repository) -- GH: https://github.com/vlang/vls -- require'lspconfig'.vls.setup{ @@ -49,19 +59,42 @@ require'lspconfig'.hls.setup{ -- filetypes = {'v'}, -- on_attach = on_attach -- } + -- Pacman: rust-analyzer -- GH: https://github.com/rust-analyzer/rust-analyzer -require'lspconfig'.rust_analyzer.setup{on_attach = on_attach, capabilities = capabilities} +vim.lsp.config('rust_analyzer', { + on_attach = on_attach, + capabilities = capabilities +}) +vim.lsp.enable('rust_analyzer') + -- Installed using R shell: -- `install.packages('languageserver')` -- GH: https://github.com/REditorSupport/languageserver -require'lspconfig'.r_language_server.setup{capabilities = capabilities} +-- vim.lsp.config('r_language_server', { +-- capabilities = capabilities +-- }) + -- Installed using Go CLI: -- go install github.com/nametake/golangci-lint-langserver@latest -- go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest -require'lspconfig'.gopls.setup{on_attach = on_attach, capabilities = capabilities} +vim.lsp.config('gopls', { + on_attach = on_attach, + capabilities = capabilities +}) +vim.lsp.enable('gopls') -require'lspconfig'.texlab.setup{on_attach = on_attach, capabilities = capabilities} +vim.lsp.config('texlab', { + on_attach = on_attach, + capabilities = capabilities +}) +vim.lsp.enable('texlab') + +vim.lsp.config('ltex_plus', { + on_attach = on_attach, + capabilities = capabilities +}) +vim.lsp.enable('ltex_plus') -- Fix that stops rust-analyzer interrupting typing when a request is cancelled for _, method in ipairs({ 'textDocument/diagnostic', 'workspace/diagnostic' }) do diff --git a/dot_config/nvim/lua/config/luasnip.lua b/dot_config/nvim/lua/config/luasnip.lua new file mode 100644 index 0000000..1b1c1a3 --- /dev/null +++ b/dot_config/nvim/lua/config/luasnip.lua @@ -0,0 +1,7 @@ +local ls = require("luasnip") + +-- Load my global snippets +require("luasnip.loaders.from_snipmate").lazy_load({paths = "~/.config/nvim/snippets"}) + +-- vim.keymap.set({"i", "s"}, "", function() ls.jump( 1) end, {silent = true}) +-- vim.keymap.set({"i", "s"}, "", function() ls.jump(-1) end, {silent = true}) diff --git a/dot_config/nvim/lua/config/treesitter.lua b/dot_config/nvim/lua/config/treesitter.lua index 367de0b..431abab 100644 --- a/dot_config/nvim/lua/config/treesitter.lua +++ b/dot_config/nvim/lua/config/treesitter.lua @@ -1,5 +1,15 @@ -require"nvim-treesitter.configs".setup { +require"nvim-treesitter".setup { highlight = { enable = true } } -local parser_config = require "nvim-treesitter.parsers".get_parser_configs() -parser_config.v = {} +-- local parser_config = require "nvim-treesitter.parsers".get_parser_configs() +-- parser_config.v = {} + +vim.api.nvim_create_autocmd('FileType', { + pattern = { 'rust', 'go' }, + callback = function() + vim.wo.foldmethod = "expr" + vim.opt.foldexpr = "v:lua.vim.treesitter.foldexpr()" + vim.opt.foldtext = "" + vim.bo.indentexpr = "v:lua.require'nvim-treesitter'.indentexpr()" + end, +}) diff --git a/dot_config/nvim/lua/plugins.lua b/dot_config/nvim/lua/plugins.lua index 25b9bb3..68d241f 100644 --- a/dot_config/nvim/lua/plugins.lua +++ b/dot_config/nvim/lua/plugins.lua @@ -77,6 +77,7 @@ require('pckr').add{ }, { "nvim-treesitter/nvim-treesitter", + branch = 'main', run = ":TSUpdate", config = function() require("config.treesitter") @@ -94,8 +95,19 @@ require('pckr').add{ -- "ms-jpq/coq_nvim", -- config = "config.coq" -- }, - "L3MON4D3/LuaSnip", - "saadparwaiz1/cmp_luasnip", + { + "L3MON4D3/LuaSnip", + config = function() + require('config.luasnip') + end + }, + { + "saadparwaiz1/cmp_luasnip", + requires = { + "hrsh7th/nvim-cmp", + "L3MON4D3/LuaSnip" + } + }, "godlygeek/tabular" } diff --git a/dot_config/nvim/lua/settings.lua b/dot_config/nvim/lua/settings.lua index d9a7620..6b04920 100644 --- a/dot_config/nvim/lua/settings.lua +++ b/dot_config/nvim/lua/settings.lua @@ -57,3 +57,12 @@ o.shelltemp = false -- o.completeopt = "menuone,noselect" vim.cmd([[autocmd BufRead,BufNewFile *.v,*.vsh setlocal filetype=v]]) -- vim.cmd([[autocmd BufWritePre *.go,*.rs lua vim.lsp.buf.format()]]) + +-- Configure ripgrep as the grep utility if present +if vim.fn.executable('rg') == 1 then + o.grepprg="rg --vimgrep --hidden --smart-case --no-heading" + + -- Lets Vim understand the ripgrep output better for the location/quickfix + -- list + -- o.grepformat = o.grepformat .. "%f:%l:%c:%m" +end diff --git a/dot_config/nvim/snippets/rust.snippets b/dot_config/nvim/snippets/rust.snippets new file mode 100644 index 0000000..bedcdca --- /dev/null +++ b/dot_config/nvim/snippets/rust.snippets @@ -0,0 +1,5 @@ +snippet fn "Function definition" + /// ${4} + fn ${1:function_name}(${2})${3} { + ${0} + }