如何使用 jdtls 在 neovim lsp 中包含引用的库?

问题描述 投票:0回答:0

我的主文件夹(在 linux 上)的一个文件夹中有一个 java 库,我一直在尝试编辑我的 neovim 配置以使其可用于任何 java 项目。我无法找到我需要的确切配置。我正在使用 lspconfig,并尝试将环境变量 JDTLS_JVM_ARGS(如 lspconfig wiki 所说)设置为“-cp $JAVA_LIB”,其中 $JAVA_LIB 包含此文件夹的路径,但这不起作用。这是我的 lsp 的相关配置:

-- Skip to the bottom for the jdtls implementation
vim.opt.completeopt = 'menuone,noinsert,noselect'

-- Set up nvim-cmp.
local cmp = require'cmp'

cmp.setup({
    snippet = {
        -- REQUIRED - you must specify a snippet engine
        expand = function(args)
            vim.fn["vsnip#anonymous"](args.body) -- For `vsnip` users.
        end,
    },
    window = {
    },
    mapping = cmp.mapping.preset.insert({
        ['<C-b>'] = cmp.mapping.scroll_docs(-4),
        ['<C-f>'] = cmp.mapping.scroll_docs(4),
        ['<C-Space>'] = cmp.mapping.complete(),
        ['<C-e>'] = cmp.mapping.abort(),
        ["<C-J>"] = cmp.mapping(function(fallback)
            if cmp.visible() then
                cmp.select_next_item()
            elseif vim.fn["vsnip#available"](1) == 1 then
                feedkey("<Plug>(vsnip-expand-or-jump)", "")
            elseif has_words_before() then
                cmp.complete()
            else
                fallback() -- The fallback function sends a already mapped key. In this case, it's probably `<C-J>`.
            end
        end, { "i", "s" }),

        ["<C-K>"] = cmp.mapping(function()
            if cmp.visible() then
                cmp.select_prev_item()
            elseif vim.fn["vsnip#jumpable"](-1) == 1 then
                feedkey("<Plug>(vsnip-jump-prev)", "")
            end
        end, { "i", "s" }),
    }),
    sources = cmp.config.sources({
        { name = 'nvim_lsp' },
        { name = 'vsnip' }, -- For vsnip users.
    }, {
        { 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' }
    })
})

-- Set up lspconfig.
local capabilities = require('cmp_nvim_lsp').default_capabilities(vim.lsp.protocol.make_client_capabilities())

require'lspconfig'.cssls.setup { capabilities = capabilities }
require'lspconfig'.html.setup { capabilities = capabilities }
require'lspconfig'.pyright.setup { capabilities = capabilities }
require'lspconfig'.csharp_ls.setup { capabilities = capabilities }
require'lspconfig'.rust_analyzer.setup { capabilities = capabilities }
require'lspconfig'.gdscript.setup { capabilities = capabilities }
require'lspconfig'.jdtls.setup { capabilities = capabilities }

大部分是从 lspconfig github 页面复制粘贴的。任何帮助将不胜感激!

java lua neovim nvim-lspconfig
© www.soinside.com 2019 - 2024. All rights reserved.