neovim

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

commit 31cacafbfcd660728b1346b906155ccec49be792
parent b23689987b0284b4c379833758fc7af60dbe23d1
Author: Tomas Nemec <nemi@skaut.cz>
Date:   Sat, 17 Sep 2022 19:08:33 +0200

update

Diffstat:
Mafter/plugin/dap.lua | 118++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------------
Alua/tms/ft/dart/path_mapping.lua | 39+++++++++++++++++++++++++++++++++++++++
2 files changed, 120 insertions(+), 37 deletions(-)

diff --git a/after/plugin/dap.lua b/after/plugin/dap.lua @@ -3,37 +3,41 @@ if not pcall(require, 'dap') then end vim.keymap.set('n', '<leader>dc', function() - require 'dap'.continue() + require'dap'.continue() end, { silent = true, desc = 'DAP Continue' }) vim.keymap.set('n', '<leader>do', function() - require 'dap'.step_over() + require'dap'.step_over() end, { silent = true, desc = 'DAP Step Over' }) vim.keymap.set('n', '<leader>di', function() - require 'dap'.step_into() + require'dap'.step_into() end, { silent = true, desc = 'DAP Step Into' }) vim.keymap.set('n', '<leader>dt', function() - require 'dap'.step_out() + require'dap'.step_out() end, { silent = true, desc = 'DAP Step Out' }) vim.keymap.set('n', '<leader>db', function() - require 'dap'.toggle_breakpoint() + require'dap'.toggle_breakpoint() end, { silent = true, desc = 'DAP Toggle Breakpoint' }) vim.keymap.set('n', '<leader>dC', function() - require 'dap'.clear_breakpoints() + require'dap'.clear_breakpoints() end, { silent = true, desc = 'DAP Clear Breakpoint' }) vim.keymap.set('n', '<Leader>dB', function() - require 'dap'.set_breakpoint(vim.fn.input('Breakpoint condition: ')) + require'dap'.set_breakpoint(vim.fn.input('Breakpoint condition: ')) end, { silent = true, desc = 'DAP Set Breakpoint' }) vim.keymap.set('n', '<leader>dL', function() - require 'dap'.set_breakpoint(nil, nil, vim.fn.input('Log point message: ')) + require'dap'.set_breakpoint(nil, nil, vim.fn.input('Log point message: ')) end, { silent = true, desc = 'DAP Set Log Point' }) vim.keymap.set('n', '<leader>dr', function() - require 'dap'.repl.open() + require'dap'.repl.open() end, { silent = true, desc = 'DAP Open Repl' }) vim.keymap.set('n', '<leader>dl', function() - require 'dap'.run_last() + require'dap'.run_last() end, { silent = true, desc = 'DAP Run Last' }) local dap = require('dap') +dap.set_log_level('TRACE') +dap.repl.commands = vim.tbl_extend('force', dap.repl.commands, { custom_commands = { ['.restart'] = dap.restart } }) + +-- DAP UI local has_dapui, dapui = pcall(require, 'dapui') if has_dapui then dapui.setup() @@ -50,6 +54,8 @@ if has_dapui then dapui.toggle() end, { silent = true, desc = 'DAP UI Toggle' }) end + +-- Virtual Text local has_dapvt, dapvt = pcall(require, 'nvim-dap-virtual-text') if has_dapvt then dapvt.setup() @@ -104,39 +110,77 @@ end -- } -- dap.adapters.nlua = function(callback, config) callback({ type = 'server', host = config.host, port = config.port }) end +-- DAP CHROME local has_vscode, vscode = pcall(require, 'dap-vscode-js') --- if has_vscode then +if has_vscode then vscode.setup { adapters = { 'pwa-chrome' } } --- else --- dap.adapters['pwa-chrome'] = { --- type = 'server', --- port = '${port}', --- id = 'pwa-chrome', --- executable = { --- command = 'node', --- args = { vim.fn.stdpath 'data' .. '/site/pack/packer/opt/vscode-js-debug/out/src/vsDebugServer.js', '${port}' }, --- detached = false, --- cwd = vim.fn.getcwd(), --- }, --- } --- end + dap.configurations.dart = { + { + type = 'pwa-chrome', + request = 'attach', + name = 'Attach', -dap.set_log_level('TRACE') -dap.configurations.dart = { - { - type = 'pwa-chrome', - request = 'attach', - name = 'Attach', + cwd = vim.fn.getcwd(), + port = 9222, + webRoot = '${workspaceFolder}/web', + + pathMapping = function() + local has_pm, pm = pcall(require, 'tms.ft.dart.path_mapping') + if has_pm then + return pm.load() + end + return {} + end, + sourceMapPathOverrides = { + -- ['${webRoot}*'] = '${webRoot}/*', + ['*.template.dart'] = '${workspaceFolder}/.dart_tool/build/generated/playground/web/*.template.dart', + }, + + }, + } +end - cwd = vim.fn.getcwd(), - port = 9222, - webRoot = '${workspaceFolder}/web', - -- sourceMapPathOverrides = {}, +-- ALT CHROME +-- +-- dap.adapters.chrome = { +-- type = 'executable', +-- command = 'node', +-- args = { vim.fn.stdpath 'data' .. '/mason/packages/chrome-debug-adapter/out/src/chromeDebug.js' }, +-- } +-- dap.configurations.dart = { -- change this to javascript if needed +-- { +-- type = 'chrome', +-- request = 'attach', +-- program = '${file}', +-- cwd = vim.fn.getcwd(), +-- sourceMaps = true, +-- protocol = 'inspector', +-- port = 9222, +-- webRoot = '${workspaceFolder}/web', +-- pathMapping = function() +-- local has_pm, pm = pcall(require, 'tms.ft.dart.path_mapping') +-- if has_pm then +-- local mapping = pm.load() +-- vim.pretty_print(mapping) +-- return mapping +-- end +-- return {} +-- end, +-- -- pathMapping = { +-- -- ['/packages/angular'] = '/home/tms/.pub-cache/hosted/pub.dartlang.org/angular-7.0.2/lib', +-- -- ['/packages/build_web_compilers'] = '/home/tms/.pub-cache/hosted/pub.dartlang.org/build_web_compilers-3.2.5/lib', +-- -- }, +-- -- sourceMapPathOverrides = { +-- -- ['*.dart'] = '${webRoot}/*.dart', +-- -- ['*.template.dart'] = '${workspaceFolder}/.dart_tool/build/generated/playground/web/*.template.dart', +-- -- ['../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', +-- -- ['main.template.dart'] = '${workspaceFolder}/.dart_tool/build/generated/playground/web/main.template.dart', +-- -- }, - }, -} +-- }, +-- } --- go +-- DAP GO local has_dapgo, dapgo = pcall(require, 'dap-go') if has_dapgo then dapgo.setup() diff --git a/lua/tms/ft/dart/path_mapping.lua b/lua/tms/ft/dart/path_mapping.lua @@ -0,0 +1,39 @@ +local M = {} + +local function readfile(path) + local file = io.open(path, 'rb') + if not file then + return nil + end + local content = file:read('*a') + file:close() + return content +end + +M.load = function() + local packages_config = vim.fn.getcwd() .. '/.dart_tool/package_config.json' + if vim.fn.filereadable(packages_config) then + vim.pretty_print(packages_config) + local content = readfile(packages_config) + local json = vim.fn.json_decode(content) + if not json or not json.packages then + return nil + end + + local result = {} + for _, package in ipairs(json.packages) do + local package_path = '' + if string.find(package.rootUri, 'file://') then + package_path = string.sub(package.rootUri, 8) .. '/' .. package.packageUri; + else + package_path = package.rootUri .. package.packageUri; + end + result['/packages/' .. package.name .. '/'] = package_path; + end + return result + end + + return nil +end + +return M