diff --git a/.config/nvim/lua/blake/dap.lua b/.config/nvim/lua/blake/dap.lua index e1b6953..883e924 100644 --- a/.config/nvim/lua/blake/dap.lua +++ b/.config/nvim/lua/blake/dap.lua @@ -17,6 +17,7 @@ M.nvim_dap = function() " Extra nnoremap dp lua require'dap'.run_last() nnoremap dr lua require'dap'.repl.open() + nnoremap dq lua require'dap'.close() ]] require("dap") vim.fn.sign_define('DapBreakpoint', {text = '綠', texthl = 'ErrorMsg', linehl = '', numhl = ''}) -- custom attributes of breakpointed lines (use an emoji?) @@ -75,8 +76,8 @@ M.dap_ui = function() -- You can change the order of elements in the sidebar elements = { -- size can be float or integer > 1 - { id = "scopes", size = 0.85, }, - { id = "breakpoints", size = 0.15 }, + { id = "scopes", size = 0.80, }, + { id = "breakpoints", size = 0.20 }, -- { id = "stacks", size = 0.15 }, -- { id = "watches", size = 0.15 }, }, diff --git a/.config/nvim/lua/blake/lsp.lua b/.config/nvim/lua/blake/lsp.lua index 19a036d..ebcc2c6 100644 --- a/.config/nvim/lua/blake/lsp.lua +++ b/.config/nvim/lua/blake/lsp.lua @@ -108,6 +108,8 @@ M.cmp = function() -- nvim-cmp supports additional completion capabilities local capabilities = vim.lsp.protocol.make_client_capabilities() capabilities = require('cmp_nvim_lsp').update_capabilities(capabilities) + -- luasnip setup + local luasnip = require 'luasnip' -- If you want insert `(` after select function or method item local cmp_autopairs = require('nvim-autopairs.completion.cmp') local cmp = require('cmp') @@ -115,7 +117,12 @@ M.cmp = function() -- add a lisp filetype (wrap my-function), FYI: Hardcoded = { "clojure", "clojurescript", "fennel", "janet" } cmp_autopairs.lisp[#cmp_autopairs.lisp+1] = "racket" -- nvim-cmp setup cmp.setup { - mapping = { + snippet = { + expand = function(args) + luasnip.lsp_expand(args.body) + end, + }, + mapping = cmp.mapping.preset.insert { [''] = cmp.mapping.select_prev_item(), [''] = cmp.mapping.select_next_item(), [''] = cmp.mapping.scroll_docs(-4), @@ -126,13 +133,11 @@ M.cmp = function() behavior = cmp.ConfirmBehavior.Replace, select = false, }, - [''] = cmp.mapping.confirm { - behavior = cmp.ConfirmBehavior.Replace, - -- select = true, - }, [''] = function(fallback) if cmp.visible() then cmp.select_next_item() + elseif luasnip.expand_or_jumpable() then + luasnip.expand_or_jump() else fallback() end @@ -140,6 +145,8 @@ M.cmp = function() [''] = function(fallback) if cmp.visible() then cmp.select_prev_item() + elseif luasnip.jumpable(-1) then + luasnip.jump(-1) else fallback() end @@ -149,6 +156,7 @@ M.cmp = function() { name = 'path' }, { name = 'nvim_lua' }, { name = 'nvim_lsp' }, + { name = 'luasnip' }, { name = 'treesitter' }, { name = 'calc' }, -- { name = 'spell' }, @@ -162,6 +170,7 @@ M.cmp = function() } }), cmp.setup.cmdline(':', { + mapping = cmp.mapping.preset.cmdline(), sources = cmp.config.sources({ { name = 'path' }, { name = 'cmdline' } @@ -205,9 +214,9 @@ M.lspconfig = function() local buffmap = vim.api.nvim_buf_set_keymap local buffopt = vim.api.nvim_buf_set_option - -- map('n', 'e', 'lua vim.diagnostic.open_float()', opts) - map('n', '[d', 'lua vim.diagnostic.goto_prev()', opts) - map('n', ']d', 'lua vim.diagnostic.goto_next()', opts) + map('n', 'e', 'lua vim.diagnostic.open_float()', opts) + map('n', '[d', 'lua vim.diagnostic.goto_prev()', opts) + map('n', ']d', 'lua vim.diagnostic.goto_next()', opts) map('n', 'q', 'lua require("telescope.builtin").diagnostics()', opts) -- Telescope -- Use an on_attach function to only map the following keys @@ -219,17 +228,17 @@ M.lspconfig = function() -- Mappings. -- See `:help vim.lsp.*` for documentation on any of the below functions buffmap(bufnr, 'n', 'gD', 'lua vim.lsp.buf.declaration()', opts) - buffmap(bufnr, 'n', 'gd', 'lua require("telescope.builtin").lsp_definitions()', opts) -- Telescope + buffmap(bufnr, 'n', 'gd', 'lua require("telescope.builtin").lsp_definitions()', opts) -- Telescope buffmap(bufnr, 'n', 'K', 'lua vim.lsp.buf.hover()', opts) - buffmap(bufnr, 'n', 'gi', 'lua require("telescope.builtin").lsp_implementations()', opts) -- Telescope - buffmap(bufnr, 'n', '', 'lua vim.lsp.buf.signature_help()', opts) + buffmap(bufnr, 'n', 'gi', 'lua require("telescope.builtin").lsp_implementations()', opts) -- Telescope + buffmap(bufnr, 'n', '', 'lua vim.lsp.buf.signature_help()', opts) buffmap(bufnr, 'n', 'wa', 'lua vim.lsp.buf.add_workspace_folder()', opts) buffmap(bufnr, 'n', 'wr', 'lua vim.lsp.buf.remove_workspace_folder()', opts) buffmap(bufnr, 'n', 'wl', 'lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))', opts) buffmap(bufnr, 'n', 'D', 'lua vim.lsp.buf.type_definition()', opts) buffmap(bufnr, 'n', 'rn', 'lua vim.lsp.buf.rename()', opts) - buffmap(bufnr, 'n', 'ca', 'lua require("telescope.builtin").lsp_code_actions()', opts) -- Telescope - buffmap(bufnr, 'n', 'gr', 'lua require("telescope.builtin").lsp_references()', opts) -- Telescope + buffmap(bufnr, 'n', 'ca', 'lua require("telescope.builtin").lsp_code_actions()', opts) -- Telescope + buffmap(bufnr, 'n', 'gr', 'lua require("telescope.builtin").lsp_references()', opts) -- Telescope buffmap(bufnr, 'n', 'f', 'lua vim.lsp.buf.formatting()', opts) buffmap(bufnr, 'n', 'so', 'lua require("telescope.builtin").lsp_document_symbols()', opts) end -- <<< diff --git a/.config/nvim/lua/blake/plugins.lua b/.config/nvim/lua/blake/plugins.lua index 93ad2c0..67dad70 100644 --- a/.config/nvim/lua/blake/plugins.lua +++ b/.config/nvim/lua/blake/plugins.lua @@ -111,6 +111,7 @@ return require('packer').startup({function() 'hrsh7th/cmp-path', 'hrsh7th/cmp-nvim-lua', 'hrsh7th/cmp-nvim-lsp', + 'saadparwaiz1/cmp_luasnip', 'ray-x/cmp-treesitter', 'hrsh7th/cmp-calc', 'f3fora/cmp-spell', @@ -119,6 +120,9 @@ return require('packer').startup({function() 'hrsh7th/cmp-emoji', }, } + use { -- luasnip (snippits) + 'L3MON4D3/LuaSnip', + } use { -- function parameter previews 'ray-x/lsp_signature.nvim', after = 'nvim-lspconfig',