123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- local cmp = require("cmp")
- cmp.setup(
- {
- experimental = {
- ghost_text = true
- },
- snippet = {
- expand = function(args)
- require('luasnip').lsp_expand(args.body) -- For `luasnip` users.
- end
- },
- window = {
- completion = cmp.config.window.bordered(),
- documentation = cmp.config.window.bordered(),
- },
- mapping = cmp.mapping.preset.insert(
- {
- ["<C-k>"] = cmp.mapping.scroll_docs(-4),
- ["<C-j>"] = cmp.mapping.scroll_docs(4),
- ["<C-Space>"] = cmp.mapping.complete(),
- ["<C-e>"] = cmp.mapping.abort(),
- ["<CR>"] = cmp.mapping.confirm({ select = true }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items.
- ["<Tab>"] = cmp.mapping(
- function(fallback)
- local col = vim.fn.col(".") - 1
- if cmp.visible() then
- cmp.select_next_item(select_opts)
- elseif col == 0 or vim.fn.getline("."):sub(col, col):match("%s") then
- fallback()
- else
- cmp.complete()
- end
- end,
- { "i", "s" }
- )
- }
- ),
- sources = cmp.config.sources(
- {
- { name = "nvim_lsp" },
- { name = "luasnip" }
- },
- {
- { name = "buffer" }
- }
- )
- }
- )
- -- Set configuration for specific filetype.
- cmp.setup.filetype(
- "gitcommit",
- {
- sources = cmp.config.sources(
- {
- { name = "cmp_git" } -- You can specify the `cmp_git` source if you were installed it.
- },
- {
- { name = "buffer" }
- }
- )
- }
- )
- -- Use buffer source for `/` and `?` (if you enabled `native_menu`, this won't work anymore).
- cmp.setup.cmdline(
- { "/", "?" },
- {
- mapping = cmp.mapping.preset.cmdline(),
- sources = {
- { name = "buffer" }
- }
- }
- )
- -- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore).
- cmp.setup.cmdline(
- ":",
- {
- mapping = cmp.mapping.preset.cmdline(),
- sources = cmp.config.sources(
- {
- { name = "path" }
- },
- {
- { name = "cmdline" }
- }
- )
- }
- )
- -- lsp-format
- require("lsp-format").setup {}
- local on_attach = function(client)
- require("lsp-format").on_attach(client)
- end
- local caps = vim.tbl_extend(
- 'keep',
- vim.lsp.protocol.make_client_capabilities(),
- require('cmp_nvim_lsp').default_capabilities()
- );
- -- Set up lspconfig.
- local capabilities = require("cmp_nvim_lsp").default_capabilities()
- require('lspconfig')["nil_ls"].setup {
- on_attach = on_attach,
- capabilities = capabilities,
- settings = {
- ['nil'] = {
- testSetting = 42,
- formatting = {
- command = { "alejandra" },
- },
- },
- },
- }
- require("lspconfig")["rust_analyzer"].setup {
- on_attach = on_attach,
- capabilities = capabilities
- }
- require("lspconfig")["zk"].setup {
- on_attach = on_attach,
- capabilities = capabilities
- }
- require("lspconfig")["lua_ls"].setup {
- on_attach = on_attach,
- capabilities = capabilities
- }
|