From fe56aca9a1a5fbe296ee3d18baa2a16a97100974 Mon Sep 17 00:00:00 2001 From: Dave Gallant Date: Sat, 30 Apr 2022 10:07:23 -0400 Subject: [PATCH] Add luasnip --- home/default.nix | 4 +-- home/nvim/lua/init.lua | 57 ++++++++++++++++++++++++++++++++++-------- 2 files changed, 49 insertions(+), 12 deletions(-) diff --git a/home/default.nix b/home/default.nix index 18ceb37..59e992f 100644 --- a/home/default.nix +++ b/home/default.nix @@ -330,15 +330,16 @@ in extraConfig = "lua require('init')"; plugins = with pkgs.vimPlugins; [ - completion-nvim /* copilot-vim */ cmp-nvim-lsp cmp-path cmp-treesitter + friendly-snippets gitlinker-nvim gitsigns-nvim gruvbox-nvim lualine-nvim + luasnip nvim-cmp nvim-lspconfig nvim-tree-lua @@ -347,7 +348,6 @@ in nvim-web-devicons packer-nvim plenary-nvim - supertab telescope-fzy-native-nvim vim-commentary vim-markdown diff --git a/home/nvim/lua/init.lua b/home/nvim/lua/init.lua index e1a6a5d..76eb1ef 100644 --- a/home/nvim/lua/init.lua +++ b/home/nvim/lua/init.lua @@ -68,10 +68,6 @@ vim.api.nvim_set_keymap( { silent = true, noremap = true } ) --- Use tab as trigger keys -vim.cmd([[imap (completion_smart_tab)]]) -vim.cmd([[imap (completion_smart_s_tab)]]) - -- Remember line number vim.cmd([[au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$") | exe "normal! g`\"" | endif]]) @@ -117,19 +113,52 @@ vim.api.nvim_set_keymap("n", "", "za", { silent = true, noremap = true }) -- packer {{{1 ------------------------------------------------------------------- ------------------------------------------------------------------------------- require("packer").startup(function() - -- use({ "ms-jpq/coq.artifacts", branch = "artifacts" }) + -- use({ "ms-jpq/coq.artifacts", branch = "artifacts" }) end) ------------------------------------------------------------------------------- -- lsp {{{1 ------------------------------------------------------------------- ------------------------------------------------------------------------------- -require'cmp'.setup { +local has_words_before = function() + local line, col = unpack(vim.api.nvim_win_get_cursor(0)) + return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil +end + +local luasnip = require("luasnip") +local cmp = require("cmp") + +cmp.setup { sources = { { name = 'nvim_lsp' }, { name = 'path' }, { name = 'treesitter' }, - } + }, + mapping = { + + [""] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_next_item() + elseif luasnip.expand_or_jumpable() then + luasnip.expand_or_jump() + elseif has_words_before() then + cmp.complete() + else + fallback() + end + end, { "i", "s" }), + + [""] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_prev_item() + elseif luasnip.jumpable(-1) then + luasnip.jump(-1) + else + fallback() + end + end, { "i", "s" }), + + }, } local lspconfig = require "lspconfig" @@ -151,6 +180,13 @@ lspconfig.gopls.setup({ lspconfig.sumneko_lua.setup({ capabilities = capabilities, + settings = { + Lua = { + diagnostics = { + globals = { 'vim' } + } + } + } }) @@ -188,6 +224,10 @@ vim.cmd([[autocmd BufWritePre *.go lua vim.lsp.buf.formatting_sync()]]) vim.cmd([[autocmd BufWritePre *.rb lua vim.lsp.buf.formatting_sync()]]) vim.cmd([[autocmd BufWritePre *.nix lua vim.lsp.buf.formatting_sync()]]) + +require'luasnip'.filetype_extend("go", {"go"}) +require'luasnip'.filetype_extend("ruby", {"rails"}) + ------------------------------------------------------------------------------- -- Plugins {{{1 --------------------------------------------------------------- ------------------------------------------------------------------------------- @@ -258,9 +298,6 @@ vim.api.nvim_set_keymap("n", "n", "NvimTreeToggle", { noremap = vim.api.nvim_set_keymap("n", "r", "NvimTreeRefresh", { noremap = true }) vim.api.nvim_set_keymap("n", "nf", "NvimTreeFindFile", { noremap = true }) --- completion-nvim -vim.cmd([[autocmd BufEnter * lua require'completion'.on_attach()]]) - --Set colorscheme vim.o.termguicolors = true vim.cmd([[colorscheme gruvbox]])