Giant blob of minor changes
[dotfiles/.git] / .config / coc / extensions / coc-go-data / tools / pkg / mod / honnef.co / go / tools@v0.0.1-2020.1.5 / cmd / keyify / go-keyify.el
diff --git a/.config/coc/extensions/coc-go-data/tools/pkg/mod/honnef.co/go/tools@v0.0.1-2020.1.5/cmd/keyify/go-keyify.el b/.config/coc/extensions/coc-go-data/tools/pkg/mod/honnef.co/go/tools@v0.0.1-2020.1.5/cmd/keyify/go-keyify.el
new file mode 100644 (file)
index 0000000..3f480ee
--- /dev/null
@@ -0,0 +1,51 @@
+;;; go-keyify.el --- keyify integration for Emacs
+
+;; Copyright 2016 Dominik Honnef. All rights reserved.
+;; Use of this source code is governed by a BSD-style
+;; license that can be found in the LICENSE file.
+
+;; Author: Dominik Honnef
+;; Version: 1.0.0
+;; Keywords: languages go
+;; URL: https://github.com/dominikh/go-keyify
+;;
+;; This file is not part of GNU Emacs.
+
+;;; Code:
+
+(require 'json)
+
+;;;###autoload
+(defun go-keyify ()
+  "Turn an unkeyed struct literal into a keyed one.
+
+Call with point on or in a struct literal."
+  (interactive)
+  (let* ((name (buffer-file-name))
+         (point (point))
+         (bpoint (1- (position-bytes point)))
+         (out (get-buffer-create "*go-keyify-output")))
+    (with-current-buffer out
+      (setq buffer-read-only nil)
+      (erase-buffer))
+    (with-current-buffer (get-buffer-create "*go-keyify-input*")
+      (setq buffer-read-only nil)
+      (erase-buffer)
+      (go--insert-modified-files)
+      (call-process-region (point-min) (point-max) "keyify" t out nil
+                           "-modified"
+                           "-json"
+                           (format "%s:#%d" name bpoint)))
+    (let ((res (with-current-buffer out
+                 (goto-char (point-min))
+                 (json-read))))
+      (delete-region
+       (1+ (cdr (assoc 'start res)))
+       (1+ (cdr (assoc 'end res))))
+      (insert (cdr (assoc 'replacement res)))
+      (indent-region (1+ (cdr (assoc 'start res))) (point))
+      (goto-char point))))
+
+(provide 'go-keyify)
+
+;;; go-keyify.el ends here