Skip to content

Instantly share code, notes, and snippets.

@PatOConnor43
Created February 29, 2020 21:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save PatOConnor43/6dc651710fe8af12bc32120ecd279a6b to your computer and use it in GitHub Desktop.
Save PatOConnor43/6dc651710fe8af12bc32120ecd279a6b to your computer and use it in GitHub Desktop.
This is a small coc-nvim plugin to wrap the Java language server in a Lombok agent to allow completion for Lombok models. Place this file in `.config/nvim/coc-extensions/` with a copy of lombok.jar as well.
const { commands, workspace, ConfigurationTarget, extensions} = require('coc.nvim')
exports.activate = async function(context) {
await setLombokToVSCode(context);
}
async function setLombokToVSCode(context) {
let lombokConfig = {
"path": "lombok.jar",
"vmArgsKey": "java.jdt.ls.vmargs",
"vmArgsValue": `-javaagent:${context.extensionPath + '/lombok.jar'}`
}
const previousVmArguments = getSetting(lombokConfig.vmArgsKey);
if (!previousVmArguments) {
return updateVMSettings(lombokConfig.vmArgsKey, lombokConfig.vmArgsValue);
} else if (!previousVmArguments.includes(lombokConfig.path)) {
return updateVMSettings(lombokConfig.vmArgsKey, previousVmArguments.trim() + ' ' + lombokConfig.vmArgsValue);
} else if (!previousVmArguments.includes(lombokConfig.vmArgsValue)) {
return updateVMSettings(lombokConfig.vmArgsKey, previousVmArguments.split('-javaagent:')[0].trim() + ' ' + lombokConfig.vmArgsValue);
}
return true;
}
async function updateVMSettings(key, value) {
await workspace.getConfiguration().update(key, value, ConfigurationTarget.Global);
const newVmArguments = getSetting(key);
return newVmArguments !== undefined && newVmArguments === value;
}
function getSetting(key) {
return workspace.getConfiguration().get(key);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment