LSP Configuration
This commit is contained in:
parent
4cb1328ad6
commit
3cd15d53a2
3 changed files with 219 additions and 10 deletions
39
scripts/jdtls
Executable file
39
scripts/jdtls
Executable file
|
|
@ -0,0 +1,39 @@
|
|||
#!/bin/sh
|
||||
# jdtls launcher: the eclipse.jdt.ls project ships no bin/jdtls of its own --
|
||||
# every consumer (nvim-jdtls, mason.nvim, coc-java, etc.) hand-writes one, so
|
||||
# this mirrors that same well-established convention. Installed at
|
||||
# /usr/local/bin/jdtls by the Containerfile so OpenCode's Java LSP
|
||||
# integration (which has no auto-download fallback for jdtls, unlike gopls)
|
||||
# can find a bare `jdtls` command on PATH.
|
||||
set -eu
|
||||
|
||||
JDTLS_HOME=/opt/jdtls
|
||||
|
||||
# jdtls requires a persistent, project-specific workspace dir (`-data`): the
|
||||
# same one must be reused across restarts for a given project, and different
|
||||
# projects must NOT share one (jdtls indexes it as if it were a single
|
||||
# workspace). Derived from a hash of the real project path and stored under
|
||||
# OpenCode's own host-persisted data dir (see the Makefile's DATA_DIR bind
|
||||
# mount) so it survives container restarts instead of vanishing with `--rm`.
|
||||
workspace_hash=$(printf '%s' "$(pwd -P)" | cksum | cut -d' ' -f1)
|
||||
data_dir="$HOME/.local/share/opencode/jdtls-workspaces/$workspace_hash"
|
||||
mkdir -p "$data_dir"
|
||||
|
||||
launcher=$(ls "$JDTLS_HOME"/plugins/org.eclipse.equinox.launcher_*.jar 2>/dev/null | head -n1)
|
||||
if [ -z "$launcher" ]; then
|
||||
echo "jdtls: equinox launcher jar not found under $JDTLS_HOME/plugins" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
exec java \
|
||||
--add-modules=ALL-SYSTEM \
|
||||
--add-opens java.base/java.util=ALL-UNNAMED \
|
||||
--add-opens java.base/java.lang=ALL-UNNAMED \
|
||||
-Declipse.application=org.eclipse.jdt.ls.core.id1 \
|
||||
-Dosgi.bundles.defaultStartLevel=4 \
|
||||
-Declipse.product=org.eclipse.jdt.ls.core.product \
|
||||
-Dlog.protocol=true -Dlog.level=ALL -Xmx1G \
|
||||
-jar "$launcher" \
|
||||
-configuration "$JDTLS_HOME/config_linux" \
|
||||
-data "$data_dir" \
|
||||
"$@"
|
||||
Reference in a new issue