diff options
author | drmargarido <drmargarido@gmail.com> | 2020-04-08 20:58:17 +0100 |
---|---|---|
committer | drmargarido <drmargarido@gmail.com> | 2020-04-08 20:58:17 +0100 |
commit | 1dae9a3b777426774578db91450df109d3e19194 (patch) | |
tree | b7cd589406285c75e76f1e3c806386d58c59a449 /gofmt.lua | |
parent | bb07bc7022edab4f9ff67f7e1fb8d1e2c64b4fc0 (diff) | |
download | lite-xl-plugins-1dae9a3b777426774578db91450df109d3e19194.tar.gz lite-xl-plugins-1dae9a3b777426774578db91450df109d3e19194.zip |
Added gofmt plugin with commands for gofmt, goimports and goreturns.
Diffstat (limited to 'gofmt.lua')
-rw-r--r-- | gofmt.lua | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/gofmt.lua b/gofmt.lua new file mode 100644 index 0000000..11c90b9 --- /dev/null +++ b/gofmt.lua @@ -0,0 +1,49 @@ +local core = require "core" +local command = require "core.command" +local keymap = require "core.keymap" + +local function exec(cmd) + local fp = io.popen(cmd, "r") + local res = fp:read("*a") + local success = fp:close() + return res:gsub("%\n$", ""), success +end + +local function get_cmd_text(cmd, doc) + local active_filename = doc and system.absolute_path(doc.filename or "") + return exec(string.format("%s %s", cmd, active_filename)) +end + +local function update_doc(cmd, doc) + local text, success = get_cmd_text(cmd, doc) + if success == nil then + local err_text = "Command '%s' not found in the system" + core.error(string.format(err_text, cmd)) + return + end + + local sel = { doc:get_selection() } + doc:remove(1, 1, math.huge, math.huge) + doc:insert(1, 1, text) + doc:set_selection(table.unpack(sel)) +end + +command.add("core.docview", { + ["gofmt:gofmt"] = function() + update_doc("gofmt", core.active_view.doc) + end, + + ["gofmt:goimports"] = function() + update_doc("goimports", core.active_view.doc) + end, + + ["gofmt:goreturns"] = function() + update_doc("goreturns", core.active_view.doc) + end, +}) + +keymap.add { + ["ctrl+i"] = "gofmt:gofmt", + ["ctrl+h"] = "gofmt:goimports", + ["ctrl+u"] = "gofmt:goreturns", +} |