1

I've been trying to get my autocomplete working. It works when I hit ctr space but everything I get says text.

Here is my lsp config:

local on_attach = function(_,_)

  vim.keymap.set('n', 'gd', vim.lsp.buf.definition, {})
  vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, {})
  vim.keymap.set('n', 'K', vim.lsp.buf.hover, {})
  vim.keymap.set('n', 'gr', vim.lsp.buf.references, {})
end

return {
  {
    "williamboman/mason.nvim",
    config = function()
      require("mason").setup()
    end,
  },
  {
    "williamboman/mason-lspconfig.nvim",
    dependencies = { "williamboman/mason.nvim" }, -- Ensure Mason is loaded first
    config = function()
      require("mason-lspconfig").setup({
        ensure_installed = {
          "clangd",
          "ts_ls",
          "omnisharp",
          "lua_ls", -- Correct LSP name for Lua
        },
      })
    end,
  },
  {
    "neovim/nvim-lspconfig",
    dependencies = { "williamboman/mason-lspconfig.nvim" }, -- Ensure LSP configurations are loaded after Mason
    config = function()
      require("lspconfig").lua_ls.setup({on_attach = on_attach, settings = {Lua = {completion = {callSnippet ="Replace", enable=true,}}}})
      
      require("lspconfig").ts_ls.setup({on_attack = on_attach})
      require("lspconfig").clangd.setup({on_attach = on_attach})
      require("lspconfig").omnisharp.setup({on_attach = on_attach})
    end,
  },
}

Here is my cmp config:

return {
  "hrsh7th/nvim-cmp",
  event = "InsertEnter",
  dependencies = {
    "hrsh7th/cmp-buffer",
    "hrsh7th/cmp-path",
    "L3MON4D3/LuaSnip",
    "saadparwaiz1/cmp_luasnip",
    "rafamadriz/friendly-snippets",
  },
  config = function()
    local cmp = require("cmp")
    local luasnip = require("luasnip")

    require("luasnip.loaders.from_vscode").lazy_load()

    cmp.setup({
      completion = {
        completeopt = "menu,menuone,preview,noselect"
      },
      snippet = {
        expand = function(args)
          luasnip.lsp_expand(args.body)
        end,
      },
      mapping = cmp.mapping.preset.insert({ -- Fix here
        ["<C-k>"] = cmp.mapping.select_prev_item(),
        ["<C-j>"] = cmp.mapping.select_next_item(),
        ["<C-Space>"] = cmp.mapping.complete(), -- Fix here
        ["<C-e>"] = cmp.mapping.abort(),
        ["<CR>"] = cmp.mapping.confirm({ select = false }),
      }),

      sources = cmp.config.sources({
        { name = "nvim_lsp" },
        { name = "luasnip" },
        { name = "buffer" },
        { name = "path" },
      })
    })
  end
}

I'm not really sure what I'm doing wrong. I straight up don't get any autocompletes at all, only if I hit ctrl space. I get snippets sometimes, but I'm not really sure why I'm not getting any lsp recommendations. I've already confirmed that my lsp is working properly. I get all the errors and stuff however I'm not sure why this specifically isn't working.

1 Answer 1

1

First, I have checked several times, but I don't see you have cmp-lsp in your config. After you have installed cmp-lsp you have to pass capabilities to the server setup table like in this example:

{
    "neovim/nvim-lspconfig",
    dependencies = { "williamboman/mason-lspconfig.nvim", "hrsh7th/cmp-nvim-lsp" },
    config = function()
        local lspconfig = require("lspconfig")

        local on_attach = function(_, _)
            vim.keymap.set("n", "gd", vim.lsp.buf.definition, {})
            vim.keymap.set("n", "gi", vim.lsp.buf.implementation, {})
            vim.keymap.set("n", "K", vim.lsp.buf.hover, {})
            vim.keymap.set("n", "gr", vim.lsp.buf.references, {})
        end

        local capabilities = vim.lsp.protocol.make_client_capabilities()
        capabilities = vim.tbl_deep_extend("force", capabilities, require("cmp_nvim_lsp").default_capabilities())

        lspconfig.lua_ls.setup({
            on_attach = on_attach,
            capabilities = capabilities,
            settings = { Lua = { completion = { callSnippet = "Replace", enable = true } } },
        })
    end,
}

You have to pass the capabilities to every server you set. You can automatically do that with a loop to avoid repetition.

I'd recommend you to check kickstart.nvim if you haven't. It is an amazing starting point to learn about Neovim config.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.