Created
February 29, 2020 21:53
-
-
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.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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