diff --git a/doc/server-capabilities.md b/doc/server-capabilities.md deleted file mode 100644 index 688e699..0000000 --- a/doc/server-capabilities.md +++ /dev/null @@ -1,164 +0,0 @@ -```lua -{ - callHierarchyProvider = true, - codeActionProvider = { - resolveProvider = true - }, - codeLensProvider = { - resolveProvider = true - }, - completionProvider = { - completionItem = { - labelDetailsSupport = true - }, - resolveProvider = true, - triggerCharacters = { ".", "@", "#", "*", " " } - }, - definitionProvider = true, - documentFormattingProvider = true, - documentHighlightProvider = true, - documentOnTypeFormattingProvider = { - firstTriggerCharacter = ";", - moreTriggerCharacter = { "\n", "}" } - }, - documentRangeFormattingProvider = true, - documentSymbolProvider = true, - executeCommandProvider = { - commands = { - "java.completion.onDidSelect", - "java.decompile", - "java.edit.handlePasteEvent", - "java.edit.organizeImports", - "java.edit.smartSemicolonDetection", - "java.edit.stringFormatting", - "java.navigate.openTypeHierarchy", - "java.navigate.resolveTypeHierarchy", - "java.project.addToSourcePath", - "java.project.createModuleInfo", - "java.project.getAll", - "java.project.getClasspaths", - "java.project.getSettings", - "java.project.import", - "java.project.isTestFile", - "java.project.listSourcePaths", - "java.project.refreshDiagnostics", - "java.project.removeFromSourcePath", - "java.project.resolveSourceAttachment", - "java.project.resolveStackTraceLocation", - "java.project.resolveWorkspaceSymbol", - "java.project.updateSourceAttachment", - "java.project.upgradeGradle", - "java.protobuf.generateSources", - "java.reloadBundles", - "vscode.java.buildWorkspace", - "vscode.java.checkProjectSettings", - "vscode.java.fetchPlatformSettings", - "vscode.java.fetchUsageData", - "vscode.java.inferLaunchCommandLength", - "vscode.java.isOnClasspath", - "vscode.java.resolveBuildFiles", - "vscode.java.resolveClassFilters", - "vscode.java.resolveClasspath", - "vscode.java.resolveElementAtSelection", - "vscode.java.resolveInlineVariables", - "vscode.java.resolveJavaExecutable", - "vscode.java.resolveMainClass", - "vscode.java.resolveMainMethod", - "vscode.java.resolveSourceUri", - "vscode.java.startDebugSession", - "vscode.java.test.findDirectTestChildrenForClass", - "vscode.java.test.findJavaProjects", - "vscode.java.test.findTestLocation", - "vscode.java.test.findTestPackagesAndTypes", - "vscode.java.test.findTestTypesAndMethods", - "vscode.java.test.generateTests", - "vscode.java.test.get.testpath", - "vscode.java.test.junit.argument", - "vscode.java.test.navigateToTestOrTarget", - "vscode.java.test.resolvePath", - "vscode.java.updateDebugSettings", - "vscode.java.validateLaunchConfig", - } - }, - foldingRangeProvider = true, - hoverProvider = true, - implementationProvider = true, - inlayHintProvider = true, - referencesProvider = true, - renameProvider = { - prepareProvider = true - }, - selectionRangeProvider = true, - semanticTokensProvider = { - documentSelector = { { - language = "java", - scheme = "file" - }, { - language = "java", - scheme = "jdt" - } }, - full = { - delta = false - }, - legend = { - tokenModifiers = { - "abstract", - "constructor", - "declaration", - "deprecated", - "documentation", - "generic", - "importDeclaration", - "native", - "private", - "protected", - "public", - "readonly", - "static", - "typeArgument", - }, - tokenTypes = { - "annotation", - "annotationMember", - "class", - "enum", - "enumMember", - "interface", - "keyword", - "method", - "modifier", - "namespace", - "parameter", - "property", - "record", - "recordComponent", - "type", - "typeParameter", - "variable", - } - }, - range = false - }, - signatureHelpProvider = { - triggerCharacters = { "(", "," } - }, - textDocumentSync = { - change = 2, - openClose = true, - save = { - includeText = true - }, - willSave = true, - willSaveWaitUntil = true - }, - typeDefinitionProvider = true, - typeHierarchyProvider = true, - workspace = { - workspaceFolders = { - changeNotifications = true, - supported = true - } - }, - workspaceSymbolProvider = true -} -``` diff --git a/lua/java-core.lua b/lua/java-core.lua deleted file mode 100644 index 5044d6f..0000000 --- a/lua/java-core.lua +++ /dev/null @@ -1,3 +0,0 @@ -local M = {} - -return M diff --git a/lua/java-core/ls/servers/jdtls/init.lua b/lua/java-core/ls/servers/jdtls/init.lua index e4bca6b..c5749ba 100644 --- a/lua/java-core/ls/servers/jdtls/init.lua +++ b/lua/java-core/ls/servers/jdtls/init.lua @@ -1,6 +1,7 @@ local config = require('java-core.ls.servers.jdtls.config') local log = require('java-core.utils.log') local mason = require('java-core.utils.mason') +local mason_reg = require('mason-registry') local path = require('java-core.utils.path') local plugins = require('java-core.ls.servers.jdtls.plugins') local util = require('lspconfig.util') @@ -13,6 +14,7 @@ local M = {} ---Ex:- { 'pom.xml', 'build.gradle', '.git' } ---@field jdtls_plugins string[] list of jdtls plugins to load on start up ---Ex:- { 'java-test', 'java-debug-adapter' } +---@field use_mason_jdk boolean whether to use mason jdk to load jdtls or not ---Returns a configuration for jdtls that you can pass into the setup of nvim-lspconfig ---@param opts JavaCoreGetConfigOptions @@ -36,6 +38,21 @@ function M.get_config(opts) '-javaagent:' .. lombok_path, } + if opts.use_mason_jdk then + local jdk = mason_reg.get_package('openjdk-17') + + if jdk:is_installed() then + local java_home = + vim.fn.glob(path.join(jdk:get_install_path(), '/jdk-17*')) + local java_bin = path.join(java_home, '/bin') + + base_config.cmd_env = { + ['PATH'] = vim.fn.getenv('PATH') .. ':' .. java_bin, + ['JAVA_HOME'] = java_home, + } + end + end + base_config.root_dir = M.get_root_finder(opts.root_markers) base_config.init_options.bundles = plugin_paths base_config.init_options.workspace = workspace.get_default_workspace()