------------------------------------------------------------------------------- -- - JDTLS server configuration - ------------------------------------------------------------------------------- local common_config = require("lsp.server_config") local M = {} function M.setup() 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 buf_set_option("omnifunc", "v:lua.vim.lsp.omnifunc") local default_opts = {noremap = true, silent = true} common_config.on_attach(client, bufnr) buf_set_keymap("n", "", "lua require('jdtls').code_action()", default_opts) buf_set_keymap("n", "ac", "lua require('jdtls').code_action()", default_opts) end local root_markers = {"gradlew", "pom.xml"} local root_dir = require("jdtls.setup").find_root(root_markers) local home = os.getenv("HOME") 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 local extendedClientCapabilities = require "jdtls".extendedClientCapabilities extendedClientCapabilities.resolveAdditionalTextEditsSupport = true config.init_options = { -- bundles = bundles; extendedClientCapabilities = extendedClientCapabilities } -- Server require("jdtls").start_or_attach(config) end return M