--- /dev/null
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.generateImplStubs = void 0;
+const coc_nvim_1 = require("coc.nvim");
+const binaries_1 = require("../binaries");
+const tools_1 = require("./tools");
+const interfaceRegex = /^(\w+ \*?\w+ )?([\w./-]+)$/;
+async function generateImplStubs(document) {
+ try {
+ const implInput = await coc_nvim_1.window.requestInput("Enter receiver and interface [f *File io.Closer]");
+ if (implInput == null) {
+ coc_nvim_1.window.showMessage("No input detected! Aborting.", "warning");
+ return;
+ }
+ const matches = implInput.match(interfaceRegex);
+ if (!matches) {
+ throw Error(`Cannot parse input: ${implInput}`);
+ }
+ const edit = await runGoImpl(document, [matches[1], matches[2]]);
+ await coc_nvim_1.workspace.applyEdit({ changes: { [document.uri]: [edit] } });
+ }
+ catch (error) {
+ coc_nvim_1.window.showMessage(error, "error");
+ }
+}
+exports.generateImplStubs = generateImplStubs;
+async function runGoImpl(document, args) {
+ const stdout = await tools_1.execTool(binaries_1.IMPL, args);
+ const { line } = await coc_nvim_1.window.getCursorPosition();
+ const insertPos = { line: line + 1, character: 0 };
+ const lineText = await coc_nvim_1.workspace.getLine(document.uri, line);
+ const newText = lineText.trim() === ''
+ ? stdout
+ : `\n${stdout}`;
+ return {
+ range: {
+ start: insertPos,
+ end: insertPos
+ },
+ newText
+ };
+}
+//# sourceMappingURL=impl.js.map
\ No newline at end of file