-- debug.lua -- -- Shows how to use the DAP plugin to debug your code. -- -- be extended to other languages as well. That's why it's called -- kickstart.nvim and not kitchen-sink.nvim ;) return { -- NOTE: Yes, you can install new plugins here! "mfussenegger/nvim-dap", -- NOTE: And you can specify dependencies as well dependencies = { -- Creates a beautiful debugger UI "rcarriga/nvim-dap-ui", -- Required dependency for nvim-dap-ui "nvim-neotest/nvim-nio", -- Installs the debug adapters for you "williamboman/mason.nvim", "jay-babu/mason-nvim-dap.nvim", -- Add your own debuggers here }, config = function() local dap = require("dap") local dapui = require("dapui") -- Dart / Flutter dap.adapters.dart = { type = "executable", command = "dart", args = { "debug_adapter" }, } dap.adapters.flutter = { type = "executable", command = "flutter", args = { "debug_adapter" }, } dap.configurations.dart = { { type = "dart", request = "launch", name = "Launch dart", dartSdkPath = "/opt/flutter/bin/cache/dart-sdk/bin/dart", -- ensure this is correct flutterSdkPath = "/opt/flutter/bin/flutter", -- ensure this is correct program = "${workspaceFolder}/lib/main.dart", -- ensure this is correct cwd = "${workspaceFolder}", }, { type = "flutter", request = "launch", name = "Launch flutter", dartSdkPath = "/opt/flutter/bin/cache/dart-sdk/bin/dart", -- ensure this is correct flutterSdkPath = "/opt/flutter/bin/flutter", -- ensure this is correct program = "${workspaceFolder}/lib/main.dart", -- ensure this is correct cwd = "${workspaceFolder}", }, } dap.adapters.gdb = { type = "executable", command = "gdb", args = { "-i", "dap" }, } dap.configurations.c = { { name = "Launch", type = "gdb", request = "launch", program = function() return vim.fn.input("Path to executable: ", vim.fn.getcwd() .. "/a.out") end, cwd = "${workspaceFolder}", stopAtBeginningOfMainSubprogram = false, }, } require("mason-nvim-dap").setup({ automatic_setup = true, handlers = {}, ensure_installed = { "dart-debug-adapter", }, }) -- Basic debugging keymaps, feel free to change to your liking! vim.keymap.set("n", "", dap.continue, { desc = "Debug: Start/Continue" }) vim.keymap.set("n", "", dap.step_into, { desc = "Debug: Step Into" }) vim.keymap.set("n", "", dap.step_over, { desc = "Debug: Step Over" }) vim.keymap.set("n", "", dap.step_out, { desc = "Debug: Step Out" }) vim.keymap.set("n", "db", dap.toggle_breakpoint, { desc = "Debug: Toggle Breakpoint" }) -- Dap UI setup -- For more information, see |:help nvim-dap-ui| dapui.setup({ -- Set icons to characters that are more likely to work in every terminal. -- Feel free to remove or use ones that you like more! :) -- Don't feel like these are good choices. icons = { expanded = "▾", collapsed = "▸", current_frame = "*" }, controls = { icons = { pause = "⏸", play = "▶", step_into = "⏎", step_over = "⏭", step_out = "⏮", step_back = "b", run_last = "▶▶", terminate = "⏹", disconnect = "⏏", }, }, }) -- Toggle to see last session result. Without this, you can't see session output in case of unhandled exception. vim.keymap.set("n", "", dapui.toggle, { desc = "Debug: See last session result." }) dap.listeners.after.event_initialized["dapui_config"] = dapui.open dap.listeners.before.event_terminated["dapui_config"] = dapui.close dap.listeners.before.event_exited["dapui_config"] = dapui.close end, }