modify nvim-jdtls settings by detecting processing-java core library

This commit is contained in:
Baipyrus 2024-11-02 16:01:15 +01:00
parent 1fe59378ba
commit 786cbc90d8

View File

@ -49,6 +49,64 @@ return {
dap_main = {},
test = true,
settings = {
java = {
project = (function()
-- START SEARCH FOR PROCESSING --
-- detect install path based on system
local is_windows = vim.fn.has("win32") == 1
local cmds = is_windows and {
"(gcm processing.exe).source",
} or {
"whereis",
"processing.exe",
}
-- run syscall and process output
local output = vim.system(cmds, { text = true }):wait()
local path = output.stdout or ""
if not is_windows then
-- on linux, get substr starting with path
local start_idx = string.find(path, "/")
path = (start_idx ~= nil) and string.sub(path, start_idx) or ""
end
-- for windows, remove backslashes
path = string.gsub(path, "\\", "/")
-- remove filename at end of path
local end_idx = string.find(path, "/[^/]*$")
path = string.sub(path, 1, end_idx)
-- in case of chocolatey install, navigate to binaries
local is_chocolatey = string.find(path, "chocolatey")
if is_chocolatey then
path = path .. "../lib/processing/tools/"
-- list directories for program version
cmds = is_windows
and {
"ls",
path,
"|select name",
"|Out-String",
}
or {
"ls",
"-l",
path,
}
output = vim.system(cmds, { text = true }):wait()
local version = string.match(output.stdout, "processing[^%s]*")
path = path .. version
end
-- set path to processing-core library
path = path .. "/core/library/core.jar"
return {
referencedLibraries = {
is_windows and string.gsub(path, "/", "\\") or path,
},
}
end)(),
inlayHints = {
parameterNames = {
enabled = "all",