2021-10-02 23:36:29 +00:00
|
|
|
-------------------------------------------------------------------------------
|
|
|
|
-- - JDTLS server configuration -
|
|
|
|
-------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
local common_config = require("lsp.server_config")
|
|
|
|
local M = {}
|
|
|
|
|
|
|
|
function M.setup()
|
2021-12-02 15:12:10 +00:00
|
|
|
require "jdtls".setup_dap()
|
|
|
|
require "jdtls.setup".add_commands()
|
|
|
|
local on_attach = function(client, bufnr)
|
|
|
|
local function buf_set_keymap(...)
|
|
|
|
vim.api.nvim_buf_set_keymap(bufnr, ...)
|
|
|
|
end
|
|
|
|
local function buf_set_option(...)
|
|
|
|
vim.api.nvim_buf_set_option(bufnr, ...)
|
|
|
|
end
|
2021-10-02 23:36:29 +00:00
|
|
|
|
2021-12-02 15:12:10 +00:00
|
|
|
buf_set_option("omnifunc", "v:lua.vim.lsp.omnifunc")
|
2021-10-02 23:36:29 +00:00
|
|
|
|
2021-12-02 15:12:10 +00:00
|
|
|
local default_opts = {noremap = true, silent = true}
|
2021-10-02 23:36:29 +00:00
|
|
|
|
2021-12-02 15:12:10 +00:00
|
|
|
common_config.on_attach(client, bufnr)
|
2021-10-02 23:36:29 +00:00
|
|
|
|
2021-12-02 15:12:10 +00:00
|
|
|
buf_set_keymap("n", "<A-CR>", "<cmd>lua require('jdtls').code_action()<CR>", default_opts)
|
|
|
|
buf_set_keymap("n", "<Leader>ac", "<cmd>lua require('jdtls').code_action()<CR>", default_opts)
|
|
|
|
end
|
2021-10-02 23:36:29 +00:00
|
|
|
|
2021-12-02 15:12:10 +00:00
|
|
|
local root_markers = {"gradlew", "pom.xml"}
|
|
|
|
local root_dir = require("jdtls.setup").find_root(root_markers)
|
|
|
|
local home = os.getenv("HOME")
|
2021-10-02 23:36:29 +00:00
|
|
|
|
2021-12-02 15:12:10 +00:00
|
|
|
local workspace_folder = home .. "/.workspace" .. vim.fn.fnamemodify(root_dir, ":p:h:t")
|
|
|
|
local config = {
|
|
|
|
flags = {
|
|
|
|
allow_incremental_sync = true
|
|
|
|
},
|
|
|
|
on_attach = on_attach
|
|
|
|
}
|
|
|
|
config.settings = {
|
|
|
|
java = {
|
|
|
|
signatureHelp = {enabled = true},
|
|
|
|
sources = {
|
|
|
|
organizeImports = {
|
|
|
|
starThreshold = 9999,
|
|
|
|
staticStarThreshold = 9999
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
config.cmd = {"jdtls-start.sh", workspace_folder}
|
|
|
|
config.on_init = function(client, _)
|
|
|
|
client.notify("workspace/didChangeConfiguration", {settings = config.settings})
|
|
|
|
end
|
2021-10-02 23:36:29 +00:00
|
|
|
|
2021-12-02 15:12:10 +00:00
|
|
|
local extendedClientCapabilities = require "jdtls".extendedClientCapabilities
|
|
|
|
extendedClientCapabilities.resolveAdditionalTextEditsSupport = true
|
|
|
|
config.init_options = {
|
|
|
|
-- bundles = bundles;
|
|
|
|
extendedClientCapabilities = extendedClientCapabilities
|
|
|
|
}
|
2021-10-02 23:36:29 +00:00
|
|
|
|
2021-12-02 15:12:10 +00:00
|
|
|
-- Server
|
|
|
|
require("jdtls").start_or_attach(config)
|
2021-10-02 23:36:29 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
return M
|