neovim

Personal neovim configuration files
git clone git://gtms.dev/neovim
Log | Files | Refs

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 }