
* Add kotlin lang * Update the opts.ensure_installed * Add the kotlin setup in nvim-dap * Update plugins based on the review comments. 1. Remove kotlin language server from mason 2. Add optinal is true, only enabled if the user has explicitly enabled the extra plugin. 3. Remove duplicate dependencies cause they are already defined in the plugin. 4. Add none-ls as optional * Update comment message
105 lines
2.9 KiB
Lua
105 lines
2.9 KiB
Lua
return {
|
|
-- Add packages(linting, debug adapter)
|
|
{
|
|
"williamboman/mason.nvim",
|
|
opts = function(_, opts)
|
|
vim.list_extend(opts.ensure_installed or {}, { "ktlint", "kotlin-debug-adapter" })
|
|
end,
|
|
},
|
|
-- Add syntax highlighting
|
|
{
|
|
"nvim-treesitter/nvim-treesitter",
|
|
opts = function(_, opts)
|
|
vim.list_extend(opts.ensure_installed or {}, { "kotlin" })
|
|
end,
|
|
},
|
|
-- Add language server
|
|
{
|
|
"neovim/nvim-lspconfig",
|
|
opts = {
|
|
servers = {
|
|
kotlin_language_server = {},
|
|
},
|
|
},
|
|
},
|
|
-- Add linting as optional
|
|
{
|
|
"mfussenegger/nvim-lint",
|
|
optional = true,
|
|
dependencies = "williamboman/mason.nvim",
|
|
opts = {
|
|
linters_by_ft = { kotlin = { "ktlint" } },
|
|
},
|
|
},
|
|
-- Add formatting as optional
|
|
{
|
|
"stevearc/conform.nvim",
|
|
optional = true,
|
|
opts = {
|
|
formatters_by_ft = { kotlin = { "ktlint" } },
|
|
},
|
|
},
|
|
-- Add formatting and linting as optional
|
|
{
|
|
"nvimtools/none-ls.nvim",
|
|
optional = true,
|
|
opts = function(_, opts)
|
|
local nls = require("null-ls")
|
|
opts.sources = vim.list_extend(opts.sources or {}, {
|
|
nls.builtins.formatting.ktlint,
|
|
nls.builtins.diagnostics.ktlint,
|
|
})
|
|
end,
|
|
},
|
|
-- Add debugger
|
|
{
|
|
"mfussenegger/nvim-dap",
|
|
optional = true,
|
|
dependencies = "williamboman/mason.nvim",
|
|
opts = function()
|
|
local dap = require("dap")
|
|
if not dap.adapters.kotlin then
|
|
require("dap").adapters.kotlin = {
|
|
type = "executable",
|
|
command = "kotlin-debug-adapter",
|
|
options = { auto_continue_if_many_stopped = false },
|
|
}
|
|
end
|
|
|
|
dap.configurations.kotlin = {
|
|
{
|
|
type = "kotlin",
|
|
request = "launch",
|
|
name = "This file",
|
|
-- may differ, when in doubt, whatever your project structure may be,
|
|
-- it has to correspond to the class file located at `build/classes/`
|
|
-- and of course you have to build before you debug
|
|
mainClass = function()
|
|
local root = vim.fs.find("src", { path = vim.uv.cwd(), upward = true, stop = vim.env.HOME })[1] or ""
|
|
local fname = vim.api.nvim_buf_get_name(0)
|
|
-- src/main/kotlin/websearch/Main.kt -> websearch.MainKt
|
|
return fname:gsub(root, ""):gsub("main/kotlin/", ""):gsub(".kt", "Kt"):gsub("/", "."):sub(2, -1)
|
|
end,
|
|
projectRoot = "${workspaceFolder}",
|
|
jsonLogFile = "",
|
|
enableJsonLogging = false,
|
|
},
|
|
{
|
|
-- Use this for unit tests
|
|
-- First, run
|
|
-- ./gradlew --info cleanTest test --debug-jvm
|
|
-- then attach the debugger to it
|
|
type = "kotlin",
|
|
request = "attach",
|
|
name = "Attach to debugging session",
|
|
port = 5005,
|
|
args = {},
|
|
projectRoot = vim.fn.getcwd,
|
|
hostName = "localhost",
|
|
timeout = 2000,
|
|
},
|
|
}
|
|
end,
|
|
},
|
|
}
|