refactor: minimize amount of vimscript (#96)
* refactor: remove autoload * since nvim 0.9 health.lua files are threaded as checkhealth provider * prof of concept * fix(runner.gocmd)!: i forgot to update it when i was working on #85 * fix(plugin): now commands register properly * fix(plugin): fix command name for :GoIfErr * fix(plugin): respect `setup_commands` option * docs: update * refactor(plugin): use vim.schedule * docs: update CONTRIBUTING
This commit is contained in:
parent
c5cc5080fa
commit
9aa0038125
9 changed files with 108 additions and 50 deletions
|
|
@ -22,9 +22,8 @@ sudo pacman -S selene stylua
|
||||||
|
|
||||||
For formatting use this following commands, or setup your editor to integrate with selene/stylua:
|
For formatting use this following commands, or setup your editor to integrate with selene/stylua:
|
||||||
```bash
|
```bash
|
||||||
task format
|
task stylua
|
||||||
task format:check # will check if your code formatted
|
task lint # lintering and format chewing
|
||||||
task lint
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### Documentation
|
### Documentation
|
||||||
|
|
@ -43,8 +42,8 @@ We use [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/), p
|
||||||
|
|
||||||
### Testing
|
### Testing
|
||||||
|
|
||||||
For testing this plugins uses [plenary.nvim](https://github.com/nvim-lua/plenary.nvim).
|
For testing this plugins uses [mini.test](https://github.com/echasnovski/mini.nvim/blob/main/readmes/mini-test.md).
|
||||||
All tests live in [/spec](https://github.com/olexsmir/gopher.nvim/tree/main/spec) dir.
|
All tests live in [/spec](./spec) dir.
|
||||||
|
|
||||||
You can run tests with:
|
You can run tests with:
|
||||||
```bash
|
```bash
|
||||||
|
|
|
||||||
12
Taskfile.yml
12
Taskfile.yml
|
|
@ -1,26 +1,16 @@
|
||||||
version: "3"
|
version: "3"
|
||||||
tasks:
|
tasks:
|
||||||
format:
|
|
||||||
desc: formats all lua files in repo
|
|
||||||
cmds:
|
|
||||||
- stylua .
|
|
||||||
|
|
||||||
lint:
|
lint:
|
||||||
desc: runs all linters
|
desc: runs all linters
|
||||||
cmds:
|
cmds:
|
||||||
- task: selene
|
- task: selene
|
||||||
- task: stylua:check
|
- stylua --check .
|
||||||
|
|
||||||
selene:
|
selene:
|
||||||
desc: runs lua linter(selene)
|
desc: runs lua linter(selene)
|
||||||
cmds:
|
cmds:
|
||||||
- selene .
|
- selene .
|
||||||
|
|
||||||
stylua:check:
|
|
||||||
desc: runs stylua in check mode
|
|
||||||
cmds:
|
|
||||||
- stylua --check .
|
|
||||||
|
|
||||||
stylua:
|
stylua:
|
||||||
desc: runs lua formatter
|
desc: runs lua formatter
|
||||||
cmds:
|
cmds:
|
||||||
|
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
function! health#gopher#check()
|
|
||||||
lua require("gopher.health").check()
|
|
||||||
endfunction
|
|
||||||
|
|
@ -61,6 +61,10 @@ You can look at default options |gopher.nvim-config-defaults|
|
||||||
---@type number
|
---@type number
|
||||||
timeout = 2000,
|
timeout = 2000,
|
||||||
|
|
||||||
|
--- whether to setup plugin commands or not
|
||||||
|
---@type boolean
|
||||||
|
setup_commands = true,
|
||||||
|
|
||||||
-- user specified paths to binaries
|
-- user specified paths to binaries
|
||||||
---@class gopher.ConfigCommand
|
---@class gopher.ConfigCommand
|
||||||
commands = {
|
commands = {
|
||||||
|
|
|
||||||
|
|
@ -25,9 +25,9 @@ end
|
||||||
|
|
||||||
---@param subcmd string
|
---@param subcmd string
|
||||||
---@param args string[]
|
---@param args string[]
|
||||||
---@return string[]|nil
|
---@return string
|
||||||
function gocmd.run(subcmd, args)
|
function gocmd.run(subcmd, args)
|
||||||
if #args == 0 then
|
if #args == 0 and subcmd ~= "generate" then
|
||||||
error "please provide any arguments"
|
error "please provide any arguments"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
@ -39,15 +39,13 @@ function gocmd.run(subcmd, args)
|
||||||
args = if_generate(args)
|
args = if_generate(args)
|
||||||
end
|
end
|
||||||
|
|
||||||
return r.sync(c.go, {
|
local rs = r.sync { c.go, subcmd, unpack(args) }
|
||||||
args = { subcmd, unpack(args) },
|
if rs.code ~= 0 then
|
||||||
on_exit = function(data, status)
|
error("go " .. subcmd .. " failed: " .. rs.stderr)
|
||||||
if status ~= 0 then
|
|
||||||
error("gocmd failed: " .. data)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
u.notify(c.go .. " " .. subcmd .. " ran successful")
|
u.notify(c.go .. " " .. subcmd .. " ran successful")
|
||||||
end,
|
return rs.stdout
|
||||||
})
|
|
||||||
end
|
end
|
||||||
|
|
||||||
return gocmd
|
return gocmd
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,10 @@ local default_config = {
|
||||||
---@type number
|
---@type number
|
||||||
timeout = 2000,
|
timeout = 2000,
|
||||||
|
|
||||||
|
--- whether to setup plugin commands or not
|
||||||
|
---@type boolean
|
||||||
|
setup_commands = true,
|
||||||
|
|
||||||
-- user specified paths to binaries
|
-- user specified paths to binaries
|
||||||
---@class gopher.ConfigCommand
|
---@class gopher.ConfigCommand
|
||||||
commands = {
|
commands = {
|
||||||
|
|
@ -90,10 +94,18 @@ function config.setup(user_config)
|
||||||
_config = vim.tbl_deep_extend("force", default_config, user_config or {})
|
_config = vim.tbl_deep_extend("force", default_config, user_config or {})
|
||||||
end
|
end
|
||||||
|
|
||||||
|
---@return boolean
|
||||||
|
---@private
|
||||||
|
function config.should_setup_commands()
|
||||||
|
return config.setup_commands
|
||||||
|
end
|
||||||
|
|
||||||
setmetatable(config, {
|
setmetatable(config, {
|
||||||
__index = function(_, key)
|
__index = function(_, key)
|
||||||
return _config[key]
|
return _config[key]
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
---@return gopher.Config
|
||||||
|
---@private
|
||||||
return config
|
return config
|
||||||
|
|
|
||||||
|
|
@ -55,19 +55,19 @@ gopher.test = {
|
||||||
}
|
}
|
||||||
|
|
||||||
gopher.get = function(...)
|
gopher.get = function(...)
|
||||||
gocmd("get", { ... })
|
gocmd("get", ...)
|
||||||
end
|
end
|
||||||
|
|
||||||
gopher.mod = function(...)
|
gopher.mod = function(...)
|
||||||
gocmd("mod", { ... })
|
gocmd("mod", ...)
|
||||||
end
|
end
|
||||||
|
|
||||||
gopher.generate = function(...)
|
gopher.generate = function(...)
|
||||||
gocmd("generate", { ... })
|
gocmd("generate", ...)
|
||||||
end
|
end
|
||||||
|
|
||||||
gopher.work = function(...)
|
gopher.work = function(...)
|
||||||
gocmd("work", { ... })
|
gocmd("work", ...)
|
||||||
end
|
end
|
||||||
|
|
||||||
return gopher
|
return gopher
|
||||||
|
|
|
||||||
74
plugin/gopher.lua
Normal file
74
plugin/gopher.lua
Normal file
|
|
@ -0,0 +1,74 @@
|
||||||
|
--- NOTE: runs in defer since this file before gopher.config
|
||||||
|
--- I'm not sure if this is the best to do this
|
||||||
|
vim.schedule(function()
|
||||||
|
if require("gopher.config").should_setup_commands() then
|
||||||
|
vim.api.nvim_create_user_command("GopherLog", function()
|
||||||
|
vim.cmd("tabnew " .. require("gopher._utils.log").get_outfile())
|
||||||
|
end, { nargs = 0 })
|
||||||
|
|
||||||
|
vim.api.nvim_create_user_command("GoIfErr", function()
|
||||||
|
require("gopher").iferr()
|
||||||
|
end, { nargs = 0 })
|
||||||
|
|
||||||
|
vim.api.nvim_create_user_command("GoCmt", function()
|
||||||
|
require("gopher").comment()
|
||||||
|
end, { nargs = 0 })
|
||||||
|
|
||||||
|
vim.api.nvim_create_user_command("GoImpl", function(args)
|
||||||
|
require("gopher").impl(unpack(args.fargs))
|
||||||
|
end, { nargs = "*" })
|
||||||
|
|
||||||
|
-- :GoInstall
|
||||||
|
vim.api.nvim_create_user_command("GoInstallDeps", function()
|
||||||
|
require("gopher").install_deps()
|
||||||
|
end, { nargs = 0 })
|
||||||
|
|
||||||
|
vim.api.nvim_create_user_command("GoInstallDepsSync", function()
|
||||||
|
require("gopher").install_deps { sync = true }
|
||||||
|
end, { nargs = 0 })
|
||||||
|
|
||||||
|
--- :GoTag
|
||||||
|
vim.api.nvim_create_user_command("GoTagAdd", function(opts)
|
||||||
|
require("gopher").tags.add(unpack(opts.fargs))
|
||||||
|
end, { nargs = "*" })
|
||||||
|
|
||||||
|
vim.api.nvim_create_user_command("GoTagRm", function(opts)
|
||||||
|
require("gopher").tags.rm(unpack(opts.fargs))
|
||||||
|
end, { nargs = "*" })
|
||||||
|
|
||||||
|
vim.api.nvim_create_user_command("GoTagClear", function()
|
||||||
|
require("gopher").tags.clear()
|
||||||
|
end, { nargs = 0 })
|
||||||
|
|
||||||
|
--- :GoTest
|
||||||
|
vim.api.nvim_create_user_command("GoTestAdd", function()
|
||||||
|
require("gopher").test.add()
|
||||||
|
end, { nargs = 0 })
|
||||||
|
|
||||||
|
vim.api.nvim_create_user_command("GoTestsAll", function()
|
||||||
|
require("gopher").test.all()
|
||||||
|
end, { nargs = 0 })
|
||||||
|
|
||||||
|
vim.api.nvim_create_user_command("GoTestsExp", function()
|
||||||
|
require("gopher").test.exported()
|
||||||
|
end, { nargs = 0 })
|
||||||
|
|
||||||
|
-- :Go
|
||||||
|
vim.api.nvim_create_user_command("GoMod", function(opts)
|
||||||
|
require("gopher").mod(opts.fargs)
|
||||||
|
end, { nargs = "*" })
|
||||||
|
|
||||||
|
vim.api.nvim_create_user_command("GoGet", function(opts)
|
||||||
|
vim.print(opts)
|
||||||
|
require("gopher").get(opts.fargs)
|
||||||
|
end, { nargs = "*" })
|
||||||
|
|
||||||
|
vim.api.nvim_create_user_command("GoWork", function(opts)
|
||||||
|
require("gopher").get(opts.fargs)
|
||||||
|
end, { nargs = "*" })
|
||||||
|
|
||||||
|
vim.api.nvim_create_user_command("GoGenerate", function(opts)
|
||||||
|
require("gopher").generate(opts.fargs or "")
|
||||||
|
end, { nargs = "?" })
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
@ -1,16 +0,0 @@
|
||||||
command! -nargs=* GoTagAdd :lua require"gopher".tags.add(<f-args>)
|
|
||||||
command! -nargs=* GoTagRm :lua require"gopher".tags.rm(<f-args>)
|
|
||||||
command! GoTagClear :lua require"gopher".tags.clear()
|
|
||||||
command! GoTestAdd :lua require"gopher".test.add()
|
|
||||||
command! GoTestsAll :lua require"gopher".test.all()
|
|
||||||
command! GoTestsExp :lua require"gopher".test.exported()
|
|
||||||
command! -nargs=* GoMod :lua require"gopher".mod(<f-args>)
|
|
||||||
command! -nargs=* GoGet :lua require"gopher".get(<f-args>)
|
|
||||||
command! -nargs=* GoWork :lua require"gopher".work(<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! GoInstallDepsSync :lua require"gopher".install_deps({ sync = true })
|
|
||||||
command! GopherLog :lua vim.cmd("tabnew " .. require("gopher._utils.log").get_outfile())
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue