-- CMP 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") require("luasnip/loaders/from_vscode").lazy_load() vim.o.completeopt = 'menuone,noselect' cmp.setup { snippet = { expand = function(args) require('luasnip').lsp_expand(args.body) end, }, mapping = { [''] = cmp.mapping.confirm({ select = true }), [''] = cmp.mapping.select_next_item(), [''] = cmp.mapping.select_prev_item(), [''] = cmp.mapping.scroll_docs(4), [''] = cmp.mapping.scroll_docs(-4), [''] = cmp.mapping.close(), [""] = 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" }), }, sources = { { name = 'nvim_lsp' }, { name = 'luasnip' }, }, } vim.cmd('autocmd FileType markdown lua require("cmp").setup.buffer { enabled = false }') -- LSPCONFIG local lsp_installer = require("nvim-lsp-installer") -- Register a handler that will be called for each installed server when it's ready (i.e. when installation is finished -- or if the server is already installed). lsp_installer.on_server_ready(function(server) local opts = {} -- (optional) Customize the options passed to the server -- if server.name == "tsserver" then -- opts.root_dir = function() ... end -- end -- This setup() function will take the provided server configuration and decorate it with the necessary properties -- before passing it onwards to lspconfig. -- Refer to https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md server:setup(opts) end) -- Misc require('nvim-autopairs').setup{} require'lsp_signature'.setup { floating_window = false } require'nvim-treesitter.configs'.setup { highlight = { enable = true, }, } require('kommentary.config').configure_language("default", { prefer_single_line_comments = true, }) require("indent_blankline").setup { char = "¦", show_trailing_blankline_indent = false, buftype_exclude = {"startify", "help", "terminal"}, filetype_exclude = {"startify", "help", "terminal"}, }