13 files changed,
144 insertions(+),
155 deletions(-)
Author:
Smirnov Oleksandr
ss2316544@gmail.com
Committed by:
GitHub
noreply@github.com
Committed at:
2022-10-07 14:31:54 +0000
Parent:
d65884b
jump to
A
lua/gopher/_utils/_health.lua
@@ -0,0 +1,17 @@
+return { + ---@param lib string + ---@return boolean + lualib_is_found = function(lib) + local is_found, _ = pcall(require, lib) + return is_found + end, + + ---@param bin string + ---@return boolean + binary_is_found = function(bin) + if vim.fn.executable(bin) == 1 then + return true + end + return false + end, +}
A
lua/gopher/_utils/commands.lua
@@ -0,0 +1,40 @@
+local Job = require "plenary.job" +local c = require("gopher.config").config.commands +local u = require "gopher._utils" + +---Run any go commands like `go generate`, `go get`, `go mod` +---@param cmd string +---@param ... string|string[] +return function(cmd, ...) + local args = { ... } + if #args == 0 then + u.notify("please provice any arguments", "error") + return + end + + if cmd == "generate" and #args == 1 and args[1] == "%" then + args[1] = vim.fn.expand "%" ---@diagnostic disable-line: missing-parameter + elseif cmd == "get" then + for i, arg in ipairs(args) do + ---@diagnostic disable-next-line: param-type-mismatch + local m = string.match(arg, "^https://(.*)$") or string.match(arg, "^http://(.*)$") or arg + table.remove(args, i) + table.insert(args, i, m) + end + end + + local cmd_args = vim.list_extend({ cmd }, args) ---@diagnostic disable-line: missing-parameter + Job:new({ + command = c.go, + args = cmd_args, + on_exit = function(_, retval) + if retval ~= 0 then + u.notify("command 'go " .. unpack(cmd_args) .. "' exited with code " .. retval, "error") + u.notify(cmd .. " " .. unpack(cmd_args), "debug") + return + end + + u.notify("go " .. cmd .. " was success runned", "info") + end, + }):start() +end
M
lua/gopher/_utils/init.lua
@@ -1,3 +1,4 @@
+---@diagnostic disable: param-type-mismatch return { ---@param t table ---@return boolean@@ -18,23 +19,6 @@ n = n - 1
end return s:sub(1, n) - end, - - ---@param lib string - ---@return boolean - lualib_is_found = function(lib) - local is_found, _ = pcall(require, lib) - return is_found - end, - - ---@param bin string - ---@return boolean - binary_is_found = function(bin) - if vim.fn.executable(bin) == 1 then - return true - end - - return false end, ---@param msg string
M
lua/gopher/_utils/ts/init.lua
@@ -1,3 +1,4 @@
+---@diagnostic disable: param-type-mismatch local nodes = require "gopher._utils.ts.nodes" local u = require "gopher._utils" local M = {@@ -24,13 +25,17 @@
---@param row string ---@param col string ---@param bufnr string|nil +---@param do_notify boolean|nil ---@return table|nil -function M.get_struct_node_at_pos(row, col, bufnr) +function M.get_struct_node_at_pos(row, col, bufnr, do_notify) + local notify = do_notify or true local query = M.querys.struct_block .. " " .. M.querys.em_struct_block local bufn = bufnr or vim.api.nvim_get_current_buf() local ns = nodes.nodes_at_cursor(query, get_name_defaults(), bufn, row, col) if ns == nil then - u.notify("struct not found", "warn") + if notify then + u.notify("struct not found", "warn") + end else return ns[#ns] end@@ -39,13 +44,17 @@
---@param row string ---@param col string ---@param bufnr string|nil +---@param do_notify boolean|nil ---@return table|nil -function M.get_func_method_node_at_pos(row, col, bufnr) +function M.get_func_method_node_at_pos(row, col, bufnr, do_notify) + local notify = do_notify or true local query = M.querys.func .. " " .. M.querys.method_name local bufn = bufnr or vim.api.nvim_get_current_buf() local ns = nodes.nodes_at_cursor(query, get_name_defaults(), bufn, row, col) if ns == nil then - u.notify("function not found", "warn") + if notify then + u.notify("function not found", "warn") + end else return ns[#ns] end@@ -54,16 +63,20 @@
---@param row string ---@param col string ---@param bufnr string|nil +---@param do_notify boolean|nil ---@return table|nil -function M.get_package_node_at_pos(row, col, bufnr) +function M.get_package_node_at_pos(row, col, bufnr, do_notify) + local notify = do_notify or true -- stylua: ignore if row > 10 then return end local query = M.querys.package local bufn = bufnr or vim.api.nvim_get_current_buf() local ns = nodes.nodes_at_cursor(query, get_name_defaults(), bufn, row, col) if ns == nil then - u.notify("package not found", "warn") - return nil + if notify then + u.notify("package not found", "warn") + return nil + end else return ns[#ns] end@@ -72,13 +85,17 @@
---@param row string ---@param col string ---@param bufnr string|nil +---@param do_notify boolean|nil ---@return table|nil -function M.get_interface_node_at_pos(row, col, bufnr) +function M.get_interface_node_at_pos(row, col, bufnr, do_notify) + local notify = do_notify or true local query = M.querys.interface local bufn = bufnr or vim.api.nvim_get_current_buf() local ns = nodes.nodes_at_cursor(query, get_name_defaults(), bufn, row, col) if ns == nil then - u.notify("interface not found", "warn") + if notify then + u.notify("interface not found", "warn") + end else return ns[#ns] end
A
lua/gopher/api.lua
@@ -0,0 +1,29 @@
+local API = {} +local tags = require "gopher.struct_tags" +local tests = require "gopher.gotests" +local cmd = require "gopher._utils.commands" + +API.install_deps = require "gopher.installer" +API.tags_add = tags.add +API.tags_rm = tags.remove +API.impl = require "gopher.impl" +API.iferr = require "gopher.iferr" +API.comment = require "gopher.comment" +API.test_add = tests.func_test +API.test_exported = tests.all_exported_tests +API.tests_all = tests.all_tests + +API.get = function(...) + cmd("get", ...) +end +API.mod = function(...) + cmd("mod", ...) +end +API.generate = function(...) + cmd("generate", ...) +end +API.work = function(...) + cmd("work", ...) +end + +return API
M
lua/gopher/comment.lua
@@ -3,25 +3,25 @@
local function generate(row, col) local comment, ns = nil, nil - ns = ts_utils.get_package_node_at_pos(row, col) + ns = ts_utils.get_package_node_at_pos(row, col, nil, false) if ns ~= nil then comment = "// Package " .. ns.name .. " provides " .. ns.name return comment, ns end - ns = ts_utils.get_struct_node_at_pos(row, col) + ns = ts_utils.get_struct_node_at_pos(row, col, nil, false) if ns ~= nil then comment = "// " .. ns.name .. " " .. ns.type .. " " return comment, ns end - ns = ts_utils.get_func_method_node_at_pos(row, col) + ns = ts_utils.get_func_method_node_at_pos(row, col, nil, false) if ns ~= nil then comment = "// " .. ns.name .. " " .. ns.type .. " " return comment, ns end - ns = ts_utils.get_interface_node_at_pos(row, col) + ns = ts_utils.get_interface_node_at_pos(row, col, nil, false) if ns ~= nil then comment = "// " .. ns.name .. " " .. ns.type .. " " return comment, ns@@ -39,6 +39,7 @@ ns.dim.s.r,
ns.dim.s.c, }) + ---@diagnostic disable-next-line: param-type-mismatch vim.fn.append(row - 1, comment) vim.api.nvim_win_set_cursor(0, {
M
lua/gopher/dap/config.lua
@@ -1,19 +1,19 @@
+---@diagnostic disable: param-type-mismatch local function get_arguments() + local function get() + vim.ui.input({ prompt = "Args: " }, function(input) + return vim.split(input or "", " ") ---@diagnostic disable-line: missing-parameter + end) + end + local co = coroutine.running() if co then return coroutine.create(function() - local args = {} - vim.ui.input({ prompt = "Args: " }, function(input) - args = vim.split(input or "", " ") - end) + local args = get() coroutine.resume(co, args) end) else - local args = {} - vim.ui.input({ prompt = "Args: " }, function(input) - args = vim.split(input or "", " ") - end) - return args + return get() end end
D
@@ -1,26 +0,0 @@
-local Job = require "plenary.job" -local c = require("gopher.config").config.commands -local u = require "gopher._utils" - ----run "go generate" -return function(...) - local args = { ... } - if #args == 1 and args[1] == "%" then - args[1] = vim.fn.expand "%" ---@diagnostic disable-line: missing-parameter - end - - local cmd_args = vim.list_extend({ "generate" }, args) - - Job:new({ - command = c.go, - args = cmd_args, - on_exit = function(_, retval) - if retval ~= 0 then - u.notify("command 'go " .. unpack(cmd_args) .. "' exited with code " .. retval, "error") - return - end - - u.notify("go generate was success runned", "info") - end, - }):start() -end
D
@@ -1,33 +0,0 @@
-local Job = require "plenary.job" -local c = require("gopher.config").config.commands -local u = require "gopher._utils" - ----run "go get" -return function(...) - local args = { ... } - if #args == 0 then - u.notify("please provide a package url to get", "error") - return - end - - for i, arg in ipairs(args) do - local m = string.match(arg, "^https://(.*)$") or string.match(arg, "^http://(.*)$") or arg - table.remove(args, i) - table.insert(args, i, m) - end - - local cmd_args = vim.list_extend({ "get" }, args) - - Job:new({ - command = c.go, - args = cmd_args, - on_exit = function(_, retval) - if retval ~= 0 then - u.notify("command 'go " .. unpack(cmd_args) .. "' exited with code " .. retval, "error") - return - end - - u.notify("go get was success runned", "info") - end, - }):start() -end
D
@@ -1,27 +0,0 @@
-local Job = require "plenary.job" -local c = require("gopher.config").config.commands -local u = require "gopher._utils" - ----run "go mod" -return function(...) - local args = { ... } - if #args == 0 then - u.notify("please provide any mod command", "error") - return - end - - local cmd_args = vim.list_extend({ "mod" }, args) - - Job:new({ - command = c.go, - args = cmd_args, - on_exit = function(_, retval) - if retval ~= 0 then - u.notify("command 'go " .. unpack(cmd_args) .. "' exited with code " .. retval, "error") - return - end - - u.notify("go mod was success runned", "info") - end, - }):start() -end
M
lua/gopher/health.lua
@@ -1,5 +1,5 @@
local health = vim.health or require "health" -local utils = require "gopher._utils" +local utils = require "gopher._utils._health" local c = require("gopher.config").config.commands local requried = "Gopher.nvim will not work without it!"
M
lua/gopher/init.lua
@@ -1,19 +1,5 @@
-local tags = require "gopher.struct_tags" -local gotests = require "gopher.gotests" -local gopher = {} +local GOPHER = {} -gopher.install_deps = require "gopher.installer" -gopher.tags_add = tags.add -gopher.tags_rm = tags.remove -gopher.mod = require "gopher.gomod" -gopher.get = require "gopher.goget" -gopher.impl = require "gopher.impl" -gopher.generate = require "gopher.gogenerate" -gopher.iferr = require "gopher.iferr" -gopher.comment = require "gopher.comment" -gopher.test_add = gotests.func_test -gopher.test_exported = gotests.all_exported_tests -gopher.tests_all = gotests.all_tests -gopher.setup = require("gopher.config").setup +GOPHER.setup = require("gopher.config").setup -return gopher +return GOPHER
M
plugin/gopher.vim
@@ -1,12 +1,13 @@
-command! -nargs=* GoTagAdd :lua require"gopher".tags_add(<f-args>) -command! -nargs=* GoTagRm :lua require"gopher".tags_rm(<f-args>) -command! -nargs=* GoTestAdd :lua require"gopher".test_add(<f-args>) -command! -nargs=* GoTestsAll :lua require"gopher".tests_all(<f-args>) -command! -nargs=* GoTestsExp :lua require"gopher".test_exported(<f-args>) -command! -nargs=* GoMod :lua require"gopher".mod(<f-args>) -command! -nargs=* GoGet :lua require"gopher".get(<f-args>) -command! -nargs=* GoImpl :lua require"gopher".impl(<f-args>) -command! -nargs=* GoGenerate :lua require"gopher".generate(<f-args>) -command! GoCmt :lua require"gopher".comment() -command! GoIfErr :lua require"gopher".iferr() -command! GoInstallDeps :lua require"gopher".install_deps() +command! -nargs=* GoTagAdd :lua require"gopher.api".tags_add(<f-args>) +command! -nargs=* GoTagRm :lua require"gopher.api".tags_rm(<f-args>) +command! -nargs=* GoTestAdd :lua require"gopher.api".test_add(<f-args>) +command! -nargs=* GoTestsAll :lua require"gopher.api".tests_all(<f-args>) +command! -nargs=* GoTestsExp :lua require"gopher.api".test_exported(<f-args>) +command! -nargs=* GoMod :lua require"gopher.api".mod(<f-args>) +command! -nargs=* GoGet :lua require"gopher.api".get(<f-args>) +command! -nargs=* GoWork :lua require"gopher.api".work(<f-args>) +command! -nargs=* GoImpl :lua require"gopher.api".impl(<f-args>) +command! -nargs=* GoGenerate :lua require"gopher.api".generate(<f-args>) +command! GoCmt :lua require"gopher.api".comment() +command! GoIfErr :lua require"gopher.api".iferr() +command! GoInstallDeps :lua require"gopher.api".install_deps()