134 lines
3.5 KiB
Lua
134 lines
3.5 KiB
Lua
local launch_json_content = [[
|
|
{
|
|
"version": "0.2.0",
|
|
"configurations": [
|
|
{
|
|
"name": "Launch package",
|
|
"type": "go",
|
|
"request": "launch",
|
|
"mode": "auto",
|
|
"remotePath": "",
|
|
"port": 38697,
|
|
"host": "127.0.0.1",
|
|
"program": "${workspaceFolder}",
|
|
"env": {
|
|
},
|
|
"args": [],
|
|
"cwd": "${workspaceFolder}",
|
|
"envFile": "${workspaceFolder}/.env",
|
|
"buildFlags":""
|
|
},
|
|
{
|
|
"name": "Debug current package",
|
|
"type": "go",
|
|
"request": "launch",
|
|
"mode": "debug",
|
|
"remotePath": "",
|
|
"port": 38697,
|
|
"host": "127.0.0.1",
|
|
"program": "${fileDirname}",
|
|
"env": {
|
|
},
|
|
"args": [],
|
|
"cwd": "${workspaceFolder}",
|
|
"envFile": "${workspaceFolder}/.env",
|
|
"buildFlags":""
|
|
},
|
|
{
|
|
"name": "Launch test function",
|
|
"type": "go",
|
|
"request": "launch",
|
|
"mode": "test",
|
|
"program": "${workspaceFolder}",
|
|
"args": [
|
|
"-test.run",
|
|
"MyTestFunction"
|
|
]
|
|
},
|
|
{
|
|
"name": "Attach main",
|
|
"type": "go",
|
|
"request": "attach",
|
|
"mode": "debug",
|
|
"remotePath": "",
|
|
"port": 38697,
|
|
"host": "127.0.0.1",
|
|
"program": "${workspaceFolder}/main.go",
|
|
"env": {
|
|
},
|
|
"args": [],
|
|
"cwd": "${workspaceFolder}",
|
|
"processId":"",
|
|
"envFile": "${workspaceFolder}/.env",
|
|
"buildFlags":""
|
|
},
|
|
{
|
|
"name": "Attach to Process",
|
|
"type": "go",
|
|
"request": "attach",
|
|
"mode": "local",
|
|
"processId": 0
|
|
},
|
|
{
|
|
"name": "Launch file",
|
|
"type": "go",
|
|
"request": "launch",
|
|
"mode": "debug",
|
|
"program": "${file}"
|
|
}
|
|
]
|
|
}
|
|
]]
|
|
|
|
local util = require("go.utils")
|
|
local log = util.log
|
|
local M = {}
|
|
local sep = require("go.utils").sep()
|
|
local vfn = vim.fn
|
|
function M.vs_launch()
|
|
local workfolder = vim.lsp.buf.list_workspace_folders()[1] or vfn.getcwd()
|
|
|
|
local launch_json = _GO_NVIM_CFG.launch_json or (workfolder .. sep .. ".vscode" .. sep .. "launch.json")
|
|
log(launch_json)
|
|
if vfn.filereadable(launch_json) == 1 then
|
|
return true, launch_json
|
|
else
|
|
return false, launch_json
|
|
end
|
|
end
|
|
|
|
function M.config()
|
|
local workfolder = vim.lsp.buf.list_workspace_folders()[1] or vfn.getcwd()
|
|
local launch_json = _GO_NVIM_CFG.launch_json or (workfolder .. sep .. ".vscode" .. sep .. "launch.json")
|
|
local launch_dir = string.match(launch_json, ".*" .. sep)
|
|
|
|
local cmd = "e " .. launch_json
|
|
|
|
if vfn.isdirectory(launch_dir) == 0 then
|
|
vfn.mkdir(launch_dir)
|
|
end
|
|
|
|
if vfn.filereadable(launch_json) == 1 then
|
|
return vim.cmd(cmd)
|
|
end
|
|
|
|
-- vfn.writefile(launch_json_content, launch_json)
|
|
local contents = vfn.split(launch_json_content, "\n")
|
|
vfn.writefile(contents, launch_json)
|
|
vim.cmd(cmd)
|
|
end
|
|
|
|
function M.load()
|
|
if _GO_NVIM_CFG.launch_json_loaded == true then
|
|
return
|
|
end
|
|
|
|
local dap = require("dap")
|
|
local launch = require("dap.ext.vscode").load_launchjs
|
|
launch(_GO_NVIM_CFG.launch_json)
|
|
_GO_NVIM_CFG.launch_json_loaded = true
|
|
log(dap.configurations)
|
|
end
|
|
|
|
return M
|