feat: adding dap

This commit is contained in:
Carlos
2025-02-10 21:40:11 -05:00
parent d1658f4789
commit 7799a9343b
5 changed files with 250 additions and 10 deletions

85
ftplugin/java.lua Normal file
View File

@@ -0,0 +1,85 @@
local home = os.getenv("HOME")
local workspace_path = home .. "/.local/share/nvim/jdtls-workspace/"
local project_name = vim.fn.fnamemodify(vim.fn.getcwd(), ":p:h:t")
local workspace_dir = workspace_path .. project_name
local keymap = vim.keymap.set
local status, jdtls = pcall(require, "jdtls")
local dap = require("dap")
if not status then
return
end
local extendedClientCapabilities = jdtls.extendedClientCapabilities
local bundles = {
vim.fn.glob(
home
.. "/.local/share/nvim/mason/packages/java-debug/com.microsoft.java.debug.plugin/target/com.microsoft.java.debug.plugin-*.jar"
),
}
vim.list_extend(
bundles,
vim.split(vim.fn.glob(home .. "/.local/share/nvim/mason/packages/vscode-java-test/server/*.jar", true), "\n")
)
local config = {
cmd = {
"java",
"-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",
"--add-modules=ALL-SYSTEM",
"--add-opens",
"java.base/java.util=ALL-UNNAMED",
"--add-opens",
"java.base/java.lang=ALL-UNNAMED",
"-javaagent:" .. home .. "/.local/share/nvim/mason/packages/jdtls/lombok.jar",
"-jar",
vim.fn.glob(home .. "/.local/share/nvim/mason/packages/jdtls/plugins/org.eclipse.equinox.launcher_*.jar"),
"-configuration",
home .. "/.local/share/nvim/mason/packages/jdtls/config_mac",
"-data",
workspace_dir,
},
root_dir = require("jdtls.setup").find_root({ ".git", "mvnw", "gradlew", "pom.xml", "build.gradle" }),
settings = {
java = {
signatureHelp = { enabled = true },
extendedClientCapabilities = extendedClientCapabilities,
maven = {
downloadSources = true,
},
referencesCodeLens = {
enabled = true,
},
references = {
includeDecompiledSources = true,
},
inlayHints = {
parameterNames = {
enabled = "all", -- literals, all, none
},
},
format = {
enabled = false,
},
},
},
init_options = {
bundles = {},
},
}
require("jdtls").start_or_attach(config)
keymap("n", "<leader>co", "<Cmd>lua require'jdtls'.organize_imports()<CR>", { desc = "Organize Imports" })
keymap("n", "<leader>crv", "<Cmd>lua require('jdtls').extract_variable()<CR>", { desc = "Extract Variable" })
keymap("v", "<leader>crv", "<Esc><Cmd>lua require('jdtls').extract_variable(true)<CR>", { desc = "Extract Variable" })
keymap("n", "<leader>crc", "<Cmd>lua require('jdtls').extract_constant()<CR>", { desc = "Extract Constant" })
keymap("v", "<leader>crc", "<Esc><Cmd>lua require('jdtls').extract_constant(true)<CR>", { desc = "Extract Constant" })
keymap("v", "<leader>crm", "<Esc><Cmd>lua require('jdtls').extract_method(true)<CR>", { desc = "Extract Method" })

View File

@@ -37,34 +37,61 @@ return {
-- Keymaps for debugging
local keymap = vim.keymap.set
keymap("n", "<F5>", function()
dap.continue()
end, { desc = "Start Debugging" })
keymap("n", "<F10>", function()
keymap("n", "<leader>dc", "<Cmd>lua require'dap'.continue()<CR>", { desc = "Start Debugging" })
keymap("n", "<leader>do", function()
dap.step_over()
end, { desc = "Step Over" })
keymap("n", "<F11>", function()
keymap("n", "<leader>di", function()
dap.step_into()
end, { desc = "Step Into" })
keymap("n", "<F12>", function()
keymap("n", "<leader>dot", function()
dap.step_out()
end, { desc = "Step Out" })
keymap("n", "<leader>db", function()
dap.toggle_breakpoint()
end, { desc = "Toggle Breakpoint" })
keymap("n", "<leader>dB", function()
dap.set_breakpoint(vim.fn.input("Breakpoint condition: "))
end, { desc = "Conditional Breakpoint" })
keymap("n", "<leader>dr", function()
dap.repl.open()
end, { desc = "Open REPL" })
keymap("n", "<leader>dl", function()
dap.run_last()
end, { desc = "Run Last Debug Session" })
keymap("n", "<leader>du", function()
dapui.toggle()
end, { desc = "Toggle DAP UI" })
keymap("n", "<leader>dq", "<Cmd>lua require'dap'.terminate()<CR>", { desc = "Stop Debugging" })
-- Java DAP Configuration
dap.adapters.java = function(callback)
callback({
type = "server",
host = "127.0.0.1",
port = { port }, -- Port JDTLS uses for debugging
})
end
dap.configurations.java = {
{
name = "Attach to running Java process",
type = "java",
request = "attach",
hostName = "127.0.0.1",
port = { port },
},
}
-- Node.js Adapter Configuration for NestJS
dap.adapters.node2 = {
type = "executable",
@@ -72,21 +99,20 @@ return {
args = { os.getenv("HOME") .. "/.local/share/nvim/mason/packages/node-debug2-adapter/out/src/nodedebug.js" },
}
-- Debug Configuration for NestJS
dap.configurations.typescript = {
{
name = "Launch NestJS",
type = "node2",
request = "launch",
program = "${workspaceFolder}/node_modules/.bin/nest",
args = { "start", "--debug", "--watch" },
program = "${workspaceFolder}/dist/main.js",
args = {},
console = "integratedTerminal",
outFiles = { "${workspaceFolder}/dist/**/*.js" },
sourceMaps = true,
protocol = "inspector",
cwd = vim.fn.getcwd(),
runtimeArgs = { "--inspect-brk" }, -- 🚀 Ensures debugging starts properly
restart = true,
runtimeArgs = { "--nolazy" },
},
{
name = "Attach to Process",
@@ -95,5 +121,71 @@ return {
processId = require("dap.utils").pick_process,
},
}
-- dap.configurations.typescript = {
-- {
-- name = "Launch NestJS",
-- type = "node2",
-- request = "launch",
-- program = "${workspaceFolder}/dist/main.js", -- ⚠️ Ensure this is correct!
-- args = {},
-- console = "integratedTerminal",
-- outFiles = { "${workspaceFolder}/dist/**/*.js" },
-- sourceMaps = true,
-- protocol = "inspector",
-- cwd = vim.fn.getcwd(),
-- runtimeArgs = { "--nolazy" },
-- },
-- {
-- name = "Attach to Process",
-- type = "node2",
-- request = "attach",
-- processId = require("dap.utils").pick_process,
-- },
-- }
dap.adapters.chrome = {
type = "executable",
command = "node",
args = { os.getenv("HOME") .. "/.local/share/nvim/mason/packages/chrome-debug-adapter/out/src/chromeDebug.js" },
}
dap.configurations.typescriptreact = {
{
name = "Attach to Chrome",
type = "chrome",
request = "attach",
program = "${file}",
cwd = vim.fn.getcwd(),
port = 9222, -- 🚀 Chrome debugging port
webRoot = "${workspaceFolder}",
sourceMaps = true,
skipFiles = { "<node_internals>/**", "webpack://_N_E/./node_modules/**" },
},
{
name = "Launch Chrome with DevTools",
type = "chrome",
request = "launch",
url = "http://localhost:4000", -- Your React app runs on this port
webRoot = "${workspaceFolder}",
runtimeArgs = { "--remote-debugging-port=9222" },
sourceMaps = true,
skipFiles = { "<node_internals>/**", "webpack://_N_E/./node_modules/**" },
},
}
dap.configurations.javascript = {
{
name = "Attach to Chrome",
type = "chrome",
request = "attach",
program = "${file}",
cwd = vim.fn.getcwd(),
port = 9222, -- 🚀 Default Chrome Debug Port
webRoot = "${workspaceFolder}",
sourceMaps = true,
skipFiles = { "<node_internals>/**", "webpack://_N_E/./node_modules/**" },
},
}
end,
}

View File

@@ -37,6 +37,7 @@ return {
"emmet_ls",
"prismals",
"pyright",
"jdtls",
},
})

View File

@@ -0,0 +1,3 @@
return {
'mfussenegger/nvim-jdtls',
}

59
tree.log Normal file
View File

@@ -0,0 +1,59 @@
.
├── README.md
├── ftplugin
│   └── java.lua
├── init.lua
├── keyboard_mappings.md
├── kkk
├── lazigitconfig.log
├── lazy-lock.json
├── lua
│   ├── cargdev
│   │   ├── core
│   │   │   ├── function
│   │   │   │   └── openTerminal.lua
│   │   │   ├── init.lua
│   │   │   ├── keymaps.lua
│   │   │   └── options.lua
│   │   ├── lazy.lua
│   │   └── plugins
│   │   ├── alpha.lua
│   │   ├── auto-session.lua
│   │   ├── autopairs.lua
│   │   ├── bufferline.lua
│   │   ├── buffertabs.lua
│   │   ├── colorscheme.lua
│   │   ├── comments.lua
│   │   ├── copilot.lua
│   │   ├── dap.lua
│   │   ├── dressing.lua
│   │   ├── formatting.lua
│   │   ├── gitsigns.lua
│   │   ├── indent-blankline.lua
│   │   ├── init.lua
│   │   ├── lazygit.lua
│   │   ├── linting.lua
│   │   ├── lsp
│   │   │   ├── jdtls.lua
│   │   │   ├── lspconfig.lua
│   │   │   └── mason.lua
│   │   ├── lualine.lua
│   │   ├── noice.lua
│   │   ├── nvim-cmp.lua
│   │   ├── nvim-jdtls.lua
│   │   ├── nvim-tree.lua
│   │   ├── nvim-treesitter-text-objects.lua
│   │   ├── substitute.lua
│   │   ├── surround.lua
│   │   ├── telescope.lua
│   │   ├── tmux.lua
│   │   ├── todo-comments.lua
│   │   ├── treesitter.lua
│   │   ├── trouble.lua
│   │   ├── vim-maximizer.lua
│   │   ├── wakatime.lua
│   │   └── which-key.lua
│   └── myconfig
└── tree.log
9 directories, 48 files