dap.lua (8704B)
1 if not pcall(require, 'dap') then 2 return 3 end 4 5 -- if pcall(require, 'cmp') then 6 -- require('cmp').setup({ 7 -- enabled = function() 8 -- return vim.api.nvim_get_option_value('buftype') ~= 'prompt' or require('cmp_dap').is_dap_buffer() 9 -- end, 10 -- }) 11 12 -- require('cmp').setup.filetype({ 'dap-repl', 'dapui_watches', 'dapui_hover' }, { sources = { { name = 'dap' } } }) 13 -- end 14 15 local dap = require('dap') 16 local repl = require('dap.repl') 17 -- dap.set_log_level('TRACE') 18 repl.commands = vim.tbl_extend('force', repl.commands, { custom_commands = { ['.r'] = dap.restart } }) 19 20 vim.keymap.set('n', '<leader>dc', require 'dap'.continue, { silent = true, desc = 'DAP Continue' }) 21 vim.keymap.set('n', '<leader>dx', require 'dap'.terminate, { silent = true, desc = 'DAP Terminate' }) 22 vim.keymap.set('n', '<leader>do', require 'dap'.step_over, { silent = true, desc = 'DAP Step Over' }) 23 vim.keymap.set('n', '<leader>di', require 'dap'.step_into, { silent = true, desc = 'DAP Step Into' }) 24 vim.keymap.set('n', '<leader>dt', require 'dap'.step_out, { silent = true, desc = 'DAP Step Out' }) 25 vim.keymap.set('n', '<leader>dR', require 'dap'.restart, { silent = true, desc = 'DAP Restart' }) 26 vim.keymap.set('n', '<leader>db', require 'dap'.toggle_breakpoint, { silent = true, desc = 'DAP Toggle Breakpoint' }) 27 vim.keymap.set('n', '<leader>dC', require 'dap'.clear_breakpoints, { silent = true, desc = 'DAP Clear Breakpoint' }) 28 vim.keymap.set('n', '<leader>dr', require 'dap'.repl.toggle, { silent = true, desc = 'DAP Toggle Repl' }) 29 vim.keymap.set('n', '<leader>dl', require 'dap'.run_last, { silent = true, desc = 'DAP Run Last' }) 30 vim.keymap.set('n', '<Leader>dB', function() 31 require 'dap'.set_breakpoint(vim.fn.input('Breakpoint condition: ')) 32 end, { silent = true, desc = 'DAP Set Breakpoint' }) 33 vim.keymap.set('n', '<leader>dL', function() 34 require 'dap'.set_breakpoint(nil, nil, vim.fn.input('Log point message: ')) 35 end, { silent = true, desc = 'DAP Set Log Point' }) 36 37 -- DAP UI 38 local has_dapui, dapui = pcall(require, 'dapui') 39 if has_dapui then 40 dapui.setup { 41 layouts = { 42 { 43 elements = { 44 -- Elements can be strings or table with id and size keys. 45 { id = 'scopes', size = 0.25 }, 46 'breakpoints', 47 'stacks', 48 'watches', 49 }, 50 size = 40, -- 40 columns 51 position = 'left', 52 }, 53 { 54 elements = { 'repl' }, 55 size = 0.25, -- 25% of total lines 56 position = 'bottom', 57 } 58 } 59 } 60 61 dap.listeners.after.event_initialized['dapui_config'] = function() 62 dapui.open({ layout = 2 }) 63 end 64 -- dap.listeners.before.event_terminated['dapui_config'] = function() 65 -- dapui.close() 66 -- end 67 -- dap.listeners.before.event_exited['dapui_config'] = function() 68 -- dapui.close() 69 -- end 70 71 vim.keymap.set('n', '<leader>du', function() 72 dapui.close() 73 end, { silent = true, desc = 'DAP UI Close' }) 74 75 vim.keymap.set('n', '<leader>dr', function() 76 dapui.toggle({ layout = 2 }) 77 end, { silent = true, desc = 'DAP UI Toggle Repl' }) 78 79 vim.keymap.set('n', '<leader>ds', function() 80 dapui.toggle({ layout = 1 }) 81 end, { silent = true, desc = 'DAP UI Toggle Sidebar' }) 82 end 83 84 -- Virtual Text 85 local has_dapvt, dapvt = pcall(require, 'nvim-dap-virtual-text') 86 if has_dapvt then 87 dapvt.setup {} 88 end 89 90 -- cpp 91 dap.adapters.cpp = { 92 type = 'executable', 93 attach = { pidProperty = 'pid', pidSelect = 'ask' }, 94 command = 'lldb', -- my binary was called 'lldb-vscode-11' 95 env = { LLDB_LAUNCH_FLAG_LAUNCH_IN_TTY = 'YES' }, 96 name = 'lldb', 97 } 98 dap.configurations.cpp = { { type = 'cpp', request = 'launch', name = 'Launch File', program = '${file}' } } 99 100 -- dart 101 -- dap.defaults.fallback.external_terminal = { command = '/usr/bin/alacritty', args = { '-e' } } 102 dap.adapters.dart = { 103 type = 'executable', 104 command = 'dart', 105 -- This command was introduced upstream in https://github.com/dart-lang/sdk/commit/b68ccc9a 106 args = { 'debug_adapter' }, 107 } 108 dap.configurations.dart = { 109 { 110 -- 111 type = 'dart', 112 request = 'launch', 113 name = 'Launch File', 114 program = '${file}', 115 cwd = '${workspaceFolder}', 116 }, 117 } 118 table.insert(dap.configurations.dart, { 119 type = 'dart', 120 request = 'launch', 121 name = 'Launch build', 122 program = '.dart_tool/build/entrypoint/build.dart', 123 args = { 'build', '--delete-conflicting-outputs' }, 124 cwd = '${workspaceFolder}', 125 }) 126 127 -- lua 128 -- dap.configurations.lua = { 129 -- { 130 -- type = 'nlua', 131 -- request = 'attach', 132 -- name = 'Attach to running Neovim instance', 133 -- host = function() 134 -- local value = vim.fn.input('Host [127.0.0.1]: ') 135 -- if value ~= '' then return value end 136 -- return '127.0.0.1' 137 -- end, 138 -- port = function() 139 -- local val = tonumber(vim.fn.input('Port: ')) 140 -- assert(val, 'Please provide a port number') 141 -- return val 142 -- end, 143 -- }, 144 -- } 145 -- dap.adapters.nlua = function(callback, config) callback({ type = 'server', host = config.host, port = config.port }) end 146 147 -- DAP CHROME 148 local has_vscode, vscode = pcall(require, 'dap-vscode-js') 149 if has_vscode then 150 -- The VSCode Debugger requires a special setup 151 vscode.setup({ 152 debugger_path = vim.fn.stdpath("data") .. "/site/pack/paqs/opt/vscode-js-debug", 153 adapters = { 'pwa-node', 'pwa-chrome' } 154 }) 155 156 table.insert(dap.configurations.dart, { 157 -- 158 type = 'pwa-chrome', 159 request = 'attach', 160 name = 'Attach to :9222', 161 cwd = vim.fn.getcwd(), 162 sourceMaps = true, 163 trace = true, 164 port = 9222, 165 webRoot = '${workspaceFolder}/web', 166 167 -- pathMapping = function() 168 -- local has_pm, pm = pcall(require, 'tms.ft.dart.path_mapping') 169 -- if has_pm then 170 -- return pm.load() 171 -- end 172 -- return {} 173 -- end, 174 -- sourceMapPathOverrides = {}, 175 }) 176 177 table.insert(dap.configurations.dart, { 178 -- 179 type = 'pwa-chrome', 180 request = 'launch', 181 name = 'Launch', 182 webRoot = '${workspaceFolder}', 183 }) 184 end 185 186 -- ALT CHROME 187 -- 188 -- dap.adapters.chrome = { 189 -- type = 'executable', 190 -- command = 'node', 191 -- args = { vim.fn.stdpath 'data' .. '/mason/packages/chrome-debug-adapter/out/src/chromeDebug.js' }, 192 -- } 193 -- dap.configurations.dart = { -- change this to javascript if needed 194 -- { 195 -- type = 'chrome', 196 -- request = 'attach', 197 -- program = '${file}', 198 -- cwd = vim.fn.getcwd(), 199 -- sourceMaps = true, 200 -- protocol = 'inspector', 201 -- port = 9222, 202 -- webRoot = '${workspaceFolder}/web', 203 -- pathMapping = function() 204 -- local has_pm, pm = pcall(require, 'tms.ft.dart.path_mapping') 205 -- if has_pm then 206 -- local mapping = pm.load() 207 -- vim.pretty_print(mapping) 208 -- return mapping 209 -- end 210 -- return {} 211 -- end, 212 -- -- sourceMapPathOverrides = { 213 -- -- ['../../../../../../*'] = '*', 214 -- -- ['../../../../../../*'] = '/home/tms/.dswitch/channels/stable/versions/2.18.0/dart-sdk/*', 215 -- -- ['/packages/angular'] = '/home/tms/.pub-cache/hosted/pub.dartlang.org/angular-7.0.2/lib', 216 -- -- ['/packages/build_web_compilers'] = '/home/tms/.pub-cache/hosted/pub.dartlang.org/build_web_compilers-3.2.5/lib', 217 -- -- }, 218 -- -- sourceMapPathOverrides = { 219 -- -- ['*.dart'] = '${webRoot}/*.dart', 220 -- -- ['*.template.dart'] = '${workspaceFolder}/.dart_tool/build/generated/playground/web/*.template.dart', 221 -- -- ['../core/linker/views/host_view.dart'] = '/home/tms/.pub-cache/hosted/pub.dartlang.org/angular-7.0.2/lib/src/core/linker/views/host_view.dart', 222 -- -- ['main.template.dart'] = '${workspaceFolder}/.dart_tool/build/generated/playground/web/main.template.dart', 223 -- -- }, 224 225 -- }, 226 -- } 227 228 -- DAP GO 229 local has_dapgo, dapgo = pcall(require, 'dap-go') 230 if has_dapgo then 231 dapgo.setup() 232 end 233 234 -- ZIG 235 -- "configurations": [ 236 -- { 237 -- "type": "lldb", 238 -- "request": "launch", 239 -- "name": "Debug", 240 -- "program": "${workspaceFolder}/zig-out/bin/my-test", 241 -- "args": ["/usr/local/bin/zig"], 242 -- "cwd": "${workspaceFolder}", 243 -- 244 -- } 245 -- ] 246 247 dap.adapters.codelldb = { 248 type = "server", 249 host = "127.0.0.1", 250 port = "${port}", 251 executable = { 252 command = "codelldb", 253 args = { "--port", "${port}" }, 254 } 255 } 256 257 dap.configurations.zig = { 258 { 259 name = "Launch file", 260 type = "codelldb", 261 request = "launch", 262 program = vim.fn.exepath("zig"), 263 args = { "run", "${file}" }, 264 cwd = "${workspaceFolder}", 265 -- stopOnEntry = false, 266 }, 267 } 268 269 -- dap godot 270 dap.adapters.godot = { type = 'server', host = '127.0.0.1', port = 6006 } 271 272 dap.configurations.gdscript = { 273 { type = 'godot', request = 'launch', name = 'Launch scene', project = '${workspaceFolder}', launch_scene = true }, 274 }