aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/docs.html6
-rw-r--r--doc/editors.html210
-rw-r--r--doc/editors/gogland.pngbin0 -> 9430 bytes
-rw-r--r--doc/editors/vimgo.pngbin0 -> 7591 bytes
-rw-r--r--doc/editors/vscodego.pngbin0 -> 3373 bytes
5 files changed, 216 insertions, 0 deletions
diff --git a/doc/docs.html b/doc/docs.html
index 1ccd1f3fe7..92392e2596 100644
--- a/doc/docs.html
+++ b/doc/docs.html
@@ -57,6 +57,12 @@ explains how to use the <a href="/cmd/go/">go command</a> to fetch, build, and
install packages, commands, and run tests.
</p>
+<h3 id="editors"><a href="editors.html">Editor plugins and IDEs</a></h3>
+<p>
+A document that summarizes commonly used editor plugins and IDEs with
+Go support.
+</p>
+
<h3 id="effective_go"><a href="effective_go.html">Effective Go</a></h3>
<p>
A document that gives tips for writing clear, idiomatic Go code.
diff --git a/doc/editors.html b/doc/editors.html
new file mode 100644
index 0000000000..dd74446d7b
--- /dev/null
+++ b/doc/editors.html
@@ -0,0 +1,210 @@
+<!--{
+ "Title": "Editor plugins and IDEs",
+ "Template": true
+}-->
+
+<h2 id="introduction">Introduction</h2>
+
+<p>
+ This document lists commonly used editor plugins and IDEs from the Go ecosystem
+ that makes Go development more productive and seamless.
+ A comphensive list of editor support and IDEs for Go development is available on
+ <a href="http://golang.org/wiki/IDEsAndTextEditorPlugins">the wiki</a>.
+</p>
+
+<h2 id="options">Options</h2>
+<p>
+The Go ecosystem provides a variety of editor plugins and IDEs to enhance your day-to-day
+editing, navigation, testing, and debugging experience.
+</p>
+
+<ul>
+<li><a href="https://github.com/fatih/vim-go">Vim Go</a>: a plugin for Vim to provide Go programming language support</li>
+<li><a href="https://marketplace.visualstudio.com/items?itemName=lukehoban.Go">Visual Studio Code Go</a>:
+an extension for Visual Studio Code to provide support for the Go programming language</li>
+<li><a href="https://www.jetbrains.com/go">Gogland</a>: Gogland is distributed either as standalone IDE
+or a plugin for the IntelliJ Platform IDEs</li>
+</ul>
+
+<p>
+Note that these are only a few top solutions, a more comphensive
+community maintained list of
+<a href="https://github.com/golang/go/wiki/IDEsAndTextEditorPlugins">IDEs and text editor plugins</a>
+is available at the wiki.
+</p>
+
+<p>
+Each development environment provides a large variety of static and dynamic tool integrations.
+The following feature matrix lists and compares the most significant features.
+</p>
+
+<table class="features-matrix">
+ <tr>
+ <th></th>
+ <th><img title="Vim Go" src="/doc/editors/vimgo.png"><br>Vim Go</th>
+ <th><img title="Visual Studio Code" src="/doc/editors/vscodego.png"><br>Visual Studio Code Go</th>
+ <th><img title="Gogland" src="/doc/editors/gogland.png"><br>Gogland</th>
+ </tr>
+ <tr>
+ <td class="feature-row" colspan="4">Editing features</td>
+ </tr>
+ <tr>
+ <td>Build and run from the editor/IDE</td>
+ <td class="yes">Yes</td>
+ <td class="yes">Yes</td>
+ <td class="yes">Yes</td>
+ </tr>
+ <tr>
+ <td>Autocompletion of identifers (variable, method, and function names)</td>
+ <td class="yes">Yes</td>
+ <td class="yes">Yes</td>
+ <td class="yes">Yes</td>
+ </tr>
+ <tr>
+ <td>Autocompletion based on type</td>
+ <td class="no">No</td>
+ <td class="no">No</td>
+ <td class="yes">Yes</td>
+ </tr>
+ <tr>
+ <td>Rename identifiers</td>
+ <td class="yes">Yes</td>
+ <td class="yes">Yes</td>
+ <td class="yes">Yes</td>
+ </tr>
+ <tr>
+ <td>Auto format, build, vet, and lint on save</td>
+ <td class="yes">Yes</td>
+ <td class="yes">Yes</td>
+ <td class="yes">Yes<sup>1</sup></td>
+ </tr>
+ <tr>
+ <td>Auto insert import paths and remove unused on save</td>
+ <td class="yes">Yes</td>
+ <td class="yes">Yes</td>
+ <td class="yes">Yes<sup>2</sup></td>
+ </tr>
+ <tr>
+ <td>Auto generate JSON, XML tags for struct fields</td>
+ <td class="yes">Yes</td>
+ <td class="yes">Yes</td>
+ <td class="yes">Yes</td>
+ </tr>
+ <tr>
+ <td class="feature-row" colspan="4">Navigation features</td>
+ </tr>
+ <tr>
+ <td>Display documentation inline, or open godoc in browser</td>
+ <td class="yes">Yes</td>
+ <td class="yes">Yes</td>
+ <td class="yes">Yes</td>
+ </tr>
+ <tr>
+ <td>Switch between <code>*.go</code> and <code>*_test.go</code> file</td>
+ <td class="yes">Yes</td>
+ <td class="yes">Yes</td>
+ <td class="yes">Yes</td>
+ </tr>
+ <tr>
+ <td>Jump to definition and referees</td>
+ <td class="yes">Yes</td>
+ <td class="yes">Yes</td>
+ <td class="yes">Yes</td>
+ </tr>
+ <tr>
+ <td>Look up for interface implementations</td>
+ <td class="yes">Yes</td>
+ <td class="yes">Yes</td>
+ <td class="yes">Yes</td>
+ </tr>
+ <tr>
+ <td>Search for callers and callees</td>
+ <td class="yes">Yes</td>
+ <td class="yes">Yes</td>
+ <td class="yes">Yes</td>
+ </tr>
+ <tr>
+ <td class="feature-row" colspan="4">Testing and debugging features</td>
+ </tr>
+ <tr>
+ <td>Debugger support</td>
+ <td class="no">No</td>
+ <td class="yes">Yes</td>
+ <td class="yes">Yes</td>
+ </tr>
+ <tr>
+ <td>Run a single test case, all tests from file, or all tests from a package</td>
+ <td class="yes">Yes</td>
+ <td class="yes">Yes</td>
+ <td class="yes">Yes</td>
+ </tr>
+ <tr>
+ <td>Auto generate tests for packages, files and identifiers</td>
+ <td class="no">No</td>
+ <td class="yes">Yes</td>
+ <td class="no">No</td>
+ </tr>
+ <tr>
+ <td>Debug tests</td>
+ <td class="no">No</td>
+ <td class="yes">Yes</td>
+ <td class="yes">Yes</td>
+ </tr>
+ <tr>
+ <td>Display test coverage</td>
+ <td class="yes">Yes</td>
+ <td class="yes">Yes</td>
+ <td class="yes">Yes</td>
+ </tr>
+ <tr class="download">
+ <td></td>
+ <td><a href="https://github.com/fatih/vim-go">Install<a/></td>
+ <td><a href="https://marketplace.visualstudio.com/items?itemName=lukehoban.Go">Install<a/></td>
+ <td><a href="https://www.jetbrains.com/go">Install<a/></td>
+ </tr>
+</table>
+
+<p>
+<sup>1</sup>: Possible when enabled via Settings &gt; Go &gt; On Save, go vet and golint are available via plugins. Also runs tests on save if configured.
+<br>
+<sup>2</sup>: Additionally, user input can disambiguate when two or more options are available.
+</p>
+
+</div>
+
+<style>
+.features-matrix {
+ min-width: 800px;
+ border-collapse: collapse;
+}
+.features-matrix th {
+ width: 60px;
+ text-align: center;
+ font-size: 14px;
+ color: #666;
+}
+.features-matrix th img {
+ width: 48px;
+}
+.features-matrix .yes {
+ text-align: center;
+}
+.features-matrix .no {
+ text-align: center;
+ background-color: #ffe9e9;
+}
+.features-matrix .download {
+ font-weight: bold;
+ text-align: center;
+}
+.features-matrix td {
+ padding: 11px 5px 11px 5px;
+ border-bottom: solid 1px #ebebeb;
+}
+.features-matrix .feature-row {
+ background-color: #ebebeb;
+ font-weight: bold;
+}
+</style>
+
+<!--TODO(jbd): Add the Atom comparison--> \ No newline at end of file
diff --git a/doc/editors/gogland.png b/doc/editors/gogland.png
new file mode 100644
index 0000000000..842f089e4a
--- /dev/null
+++ b/doc/editors/gogland.png
Binary files differ
diff --git a/doc/editors/vimgo.png b/doc/editors/vimgo.png
new file mode 100644
index 0000000000..cf317eff32
--- /dev/null
+++ b/doc/editors/vimgo.png
Binary files differ
diff --git a/doc/editors/vscodego.png b/doc/editors/vscodego.png
new file mode 100644
index 0000000000..4e6c7b8047
--- /dev/null
+++ b/doc/editors/vscodego.png
Binary files differ