gide is an IDE framework in pure Go, using the GoGi gui. It extensively adopts emacs keybindings.

Overview

Gide

alt tag

Gide is a flexible IDE (integrated development environment) framework in pure Go, using the GoGi GUI (for which it serves as a continuous testing platform :) and the GoPi interactive parser for syntax highlighting and more advanced IDE code processing.

See the Wiki for more docs, Install instructions (go get github.com/goki/gide/cmd/gide should work if GoGi system libraries are in place), and Google Groups goki-gi emailing list.

Go Report Card GoDoc Travis

There are many existing, excellent choices for text editors and IDEs, but Gide is possibly the best pure Go option available. The Go language represents a special combination of simplicity, elegance, and power, and is a joy to program in, and is currently the main language fully-supported by Gide. Our ambition is to capture some of those Go attributes in an IDE.

Some of the main features of Gide include:

  • Designed to function as both a general-purpose text editor and an IDE. It comes configured with command support for LaTeX, Markdown, and Makefiles, in addition to Go, and the command system is fully extensible to support any command-line tools.

  • Provides a tree-based file browser on the left, with builtin support for version control (git, svn, etc) and standard file management functionality through drag-and-drop, etc. You can look at git logs, diffs, etc through this interface.

  • Command actions show output on a tabbed output display on the right, along with other special interfaces such as Find / Replace, Symbols, Debugger, etc. Thus, the overall design is extensible and new interfaces can be easily added to supply new functionality. You don't spend any time fiddling around with lots of different panels all over the place, and you always know where to look to find something. Maybe the result is less fancy and "bespoke" for a given use-case (e.g., Debugging), but our "giding" principle is to use a simple framework that does most things well, much like the Go language itself.

  • Strongly keyboard focused, inspired by Emacs -- existing Emacs users should be immediately productive. However, other common keyboard bindings are also supported, and key bindings are entirely customizable. If you're considering actually using it, we strongly recommend reading the Wiki tips to get the most out of it, and understand the key design principles (e.g., why there are no tabs for open files!).

Install

  • Wiki instructions: Install -- for building directly from source.

  • See Releases on this github page for pre-built OS-specific app packages that install the compiled binaries.

  • See install directory for OS-specific Makefiles to install apps and build packages.

Current Status

As of April 2020, it is feature complete as a Go IDE, including type-comprehension-based completion, and an integrated GUI debugger, running on top of delve. It is in daily use by the primary developers, and very stable at this point, with the initial 1.0 release now available.

In addition to Issues shown on github, some important features to be added longer-term include:

  • More coding automation, refactoring, etc. We don't want to go too crazy here, preferring the more general-purpose and simple approach, but probably some more could be done.

  • Full support for Python, including extending the GoPi interactive parser to handle Python, so it will have been worth writing instead of just using the native Go parser.

Screenshots

Screenshot

Screenshot, darker

Comments
  • Interactive replace delayed replace

    Interactive replace delayed replace

    here is an example to explain -- replace x with $ (the cursor is vertical bar in example)

    ax bx cx

    after the first 'y' the text is unchanged

    ax bx| cx

    after the second 'y' the text changes to this

    a$ bx cx|

    Note that the cursor is advancing correctly but the replace is one "behind"

    opened by rohrlich 14
  • Gide frozen when debugging

    Gide frozen when debugging

    A couple of times while debugging gide seems frozen, i.e. not accepting input from keyboard or mouse/trackpad.

    No clue about what causes this behavior.

    opened by rohrlich 13
  • Lookup on field should take you to field, not just struct

    Lookup on field should take you to field, not just struct

    Also, wrong line numbers. In this case I did a lookup on ss.SimMatTick which is line 270. The line numbers show are for the comment on the ss struct. Screen Shot 2020-02-11 at 12 04 09 PM

    opened by rohrlich 13
  • add spell checking with completion

    add spell checking with completion

    "hunspell" seems like main opensource spell checking framework - original is in C / C++, but there is a golang port of unknown quality: https://github.com/client9/gospell

    this is a dictionary for hunspell that we could try:

    https://github.com/marcoagpinto/aoo-mozilla-en-dict/blob/master/en_US%20(Kevin%20Atkinson)/README_en_US.txt

    hunspell site: https://github.com/hunspell/hunspell

    this is an interesting, very fast alternative but not clear how it would work with hunspell dictionary? needs training? https://github.com/sajari/fuzzy

    need both online completion-based spellcheck and a separate overall spell-check doc.

    can add spell checking as an option in the Langs config -- appropriate for some langs (.tex, .md) but not others (program code, although it could be selectively turned on for comments I guess)

    opened by rcoreilly 12
  • Crash invoking Debug

    Crash invoking Debug

    I got this again. Steps to recreate were:

    • open project
    • open a .go file
    • build project project
    • select "debug"

    2020/02/08 20:52:38 Gi Debug: File type Csv not supported

    panic: runtime error: index out of range [0] with length 0

    goroutine 253 [running]: github.com/goki/gide/gide.(*Command).RunAfterPrompts(0xc00073d500, 0x51e1b80, 0xc0007b5500, 0xc00f02b200) /Users/rohrlich/go/src/github.com/goki/gide/gide/commands.go:365 +0x550 github.com/goki/gide/gide.(*Command).Run(0xc00073d500, 0x51e1b80, 0xc0007b5500, 0xc00f02b200) /Users/rohrlich/go/src/github.com/goki/gide/gide/commands.go:330 +0x2f2 github.com/goki/gide/gidev.(*GideView).ExecCmdName(0xc0007b5500, 0x0, 0x0, 0x6000101) /Users/rohrlich/go/src/github.com/goki/gide/gidev/gideview.go:1342 +0xd1 github.com/goki/gide/gidev.(*GideView).ExecCmds(0xc0007b5500, 0xc0000427c0, 0x2, 0x4, 0x10005150101) /Users/rohrlich/go/src/github.com/goki/gide/gidev/gideview.go:1455 +0x7e github.com/goki/gide/gidev.(*GideView).Build.func1() /Users/rohrlich/go/src/github.com/goki/gide/gidev/gideview.go:1473 +0x55 github.com/goki/gide/gidev.(*GideView).SaveAllCheck(0xc0007b5500, 0xc0139ebe01, 0xc0139ebec0, 0x4ed5e20) /Users/rohrlich/go/src/github.com/goki/gide/gidev/gideview.go:320 +0x81 github.com/goki/gide/gidev.(*GideView).Build(0xc0007b5500) /Users/rohrlich/go/src/github.com/goki/gide/gidev/gideview.go:1472 +0x7a reflect.Value.call(0x4ed5e20, 0xc0007b5500, 0x6a13, 0x4ed9afe, 0x4, 0x0, 0x0, 0x0, 0xc00fd23aa0, 0x400f328, ...) /usr/local/go/src/reflect/value.go:460 +0x5f6 reflect.Value.Call(0x4ed5e20, 0xc0007b5500, 0x6a13, 0x0, 0x0, 0x0, 0xc006f76d94, 0x0, 0xc003864a50) /usr/local/go/src/reflect/value.go:321 +0xb4

    opened by rohrlich 11
  • Actions on file nodes should go through version control

    Actions on file nodes should go through version control

    another one that I can't seem to find, about making those actions e.g., delete, rename go through version control commands if VCS is active (git, svn etc). probably cleanest to just move the VCS stuff into gi -- would be generally useful for all such filetree functionality to be VCS aware. Then can just set the VCS state etc on the FileTree root node or something like that, if it detects a .git file etc. Logic is all already in gide, just need to move it and apply it..

    opened by rohrlich 11
  • Need mechanism for supplementing dictionary with specific word sets

    Need mechanism for supplementing dictionary with specific word sets

    For example we might want to add neuroscience terms or programming jargon.

    We can start by adding some texts to the default training text but it would be easy to allow users to point to text they want to train on.

    opened by rohrlich 9
  • SymbolsView not adding scrollbar

    SymbolsView not adding scrollbar

    • Open SymbolsView on a file with few symbols
    • Change the active view to a file with many symbols (enough to require scrolling)
    • Click SymbolsView Refresh button
    • The scrollbar doesn't appear
    • Collapsing and expanding any part of the tree will add the scroll bar

    Adding NeedsFullReRender() to RefreshAction() does not help.

    opened by rohrlich 8
  • Gide frozen when debugging because restart not killing previous executable

    Gide frozen when debugging because restart not killing previous executable

    I didn't reopen because we had cluttered the old ticket with other issues.

    Definitely happens sometimes on restart but I haven't narrowed down further.

    opened by rohrlich 7
  • Not stopping at breakpoint

    Not stopping at breakpoint

    Possibly user error :)

    • Build go project
    • Click Debug
    • Panel tab shows "building" then "ready"
    • clicking continue starts the app
    • set breakpoint on first line of code in TrialStatsTRC()
    • click train

    Note that this is my app - did not try with ra25

    opened by rohrlich 7
  • command_prefs.json should be recreated if missing -  possible crash if file command_prefs.json missing

    command_prefs.json should be recreated if missing - possible crash if file command_prefs.json missing

    Many of the std cmds are not in the exec cmd list so I thought it might be a problem with stale command_prefs as I haven't been using gide in several months.

    [email protected]:gide:> ./gide panic: runtime error: invalid memory address or nil pointer dereference [signal SIGSEGV: segmentation violation code=0x1 addr=0x40 pc=0x4bcf72b]

    goroutine 41 [running]: github.com/goki/ki/ki.(*Node).Child(...) /Users/rohrlich/go/src/github.com/goki/ki/ki/node.go:589 github.com/goki/gide/gidev.(*GideView).TextViewByIndex(0xc000203500, 0x0, 0x4e2c260) /Users/rohrlich/go/src/github.com/goki/gide/gidev/gideview.go:2213 +0xbb github.com/goki/gide/gidev.(*GideView).ActiveTextView(...) /Users/rohrlich/go/src/github.com/goki/gide/gidev/gideview.go:439 github.com/goki/gide/gidev.ExecCmds(0x4ed5e20, 0xc000203500, 0xc000202a80, 0x41a1d0a, 0x4edd6a6, 0x51cfbc0) /Users/rohrlich/go/src/github.com/goki/gide/gidev/gideview.go:1373 +0xaf github.com/goki/gi/giv.MethViewSubMenuFunc(0x5197ce0, 0xc0009ce600, 0xc0009cfe40) /Users/rohrlich/go/src/github.com/goki/gi/giv/methview.go:953 +0xb3f github.com/goki/gi/gi.(*ButtonBase).OpenMenu(0xc0009ce600, 0x5197ce0) /Users/rohrlich/go/src/github.com/goki/gi/gi/buttons.go:351 +0x83 github.com/goki/gi/gi.(*Action).ButtonRelease(0xc0009ce600) /Users/rohrlich/go/src/github.com/goki/gi/gi/action.go:224 +0x172 github.com/goki/gi/gi.(*ButtonBase).MouseEvent.func1(0x5197ce0, 0xc0009ce600, 0x51a04e0, 0xc000918000, 0x0, 0x4dee060, 0xc000682d00) /Users/rohrlich/go/src/github.com/goki/gi/gi/buttons.go:446 +0xcd github.com/goki/gi/gi.(*WinEventRecv).Call(0xc00696dd88, 0x51a04e0, 0xc000918000, 0x0, 0x4dee060, 0xc000682d00) /Users/rohrlich/go/src/github.com/goki/gi/gi/events.go:116 +0x8c github.com/goki/gi/gi.(*EventMgr).SendEventSignal(0xc000918190, 0x51374c0, 0xc000682d00, 0x1) /Users/rohrlich/go/src/github.com/goki/gi/gi/events.go:237 +0x54f github.com/goki/gi/gi.(*Window).ProcessEvent(0xc000918000, 0x51374c0, 0xc000682d00) /Users/rohrlich/go/src/github.com/goki/gi/gi/window.go:1508 +0x8ec github.com/goki/gi/gi.(*Window).EventLoop(0xc000918000) /Users/rohrlich/go/src/github.com/goki/gi/gi/window.go:1445 +0x36 created by github.com/goki/gi/gi.(*Window).GoStartEventLoop /Users/rohrlich/go/src/github.com/goki/gi/gi/window.go:860 +0xa6

    opened by rohrlich 7
  • for prompt cmd args, parse spaces into separate args

    for prompt cmd args, parse spaces into separate args

    if you have a prompt command, such as git checkout and you enter "origin master" it doesn't work -- need to split on space and send as separate args to command.

    opened by rcoreilly 2
Releases(v1.0.23)
  • v1.0.23(Oct 22, 2021)

    This release fixes use of GoMod = true (under gide/Gide Prefs menu) to use modules mode -- previously was unusably jerky due to the golang tools packages.Load function seemingly tanking the entire system (even when running as a separate goroutine). Now caching key data, so only pay the price the first time -- it also seems like they made it faster too.

    Source code(tar.gz)
    Source code(zip)
  • v1.0.5(Jun 28, 2020)

  • v1.0.1(Apr 8, 2020)

  • v0.9.16(Mar 25, 2020)

    updates to button were driving full window updates and breaking FindView rendering etc. also SetStatus was blocking window updates causing issues with interactive replace etc.

    do not use 0.9.15!

    Source code(tar.gz)
    Source code(zip)
  • v0.9.15(Mar 25, 2020)

  • v0.9.14(Mar 16, 2020)

  • v0.9.13(Mar 3, 2020)

    • includes new improved VCS (git) log view, separate full repo log view, better blame display, some robustness and updating fixes for debug view.

    • also includes a much-improved tex mode with bibtex completion support (from pi)

    Source code(tar.gz)
    Source code(zip)
  • v0.9.12(Feb 16, 2020)

    Includes significant fix for editing smoothness and also minor fixes in FollowPtr.

    Overall, editing is the smoothest in GOPATH mode (GoMod = false) -- that is recommended unless you really want to use modules, for the time being. It isn't too bad with modules so not a huge deal though.

    Source code(tar.gz)
    Source code(zip)
  • v0.9.11(Feb 15, 2020)

    Gide now has full IDE-level functionality, including debugger, usable VCS diff view, log view, and decent, usable completion (with a few more issues).

    Will be using and testing for upcoming 1.0 release soon.

    Source code(tar.gz)
    Source code(zip)
  • v0.5.11(Dec 30, 2019)

  • v0.5.10(Nov 20, 2019)

  • v0.5.9(Jun 6, 2019)

  • v0.5.8(Jun 6, 2019)

  • v0.5.7(Mar 22, 2019)

  • v0.5.1(Nov 15, 2018)

Owner
GoKi
GoKi framework for Trees (Ki in Japanese) in Go language, including GoGi 2D & 3D GUI framework
GoKi
Eclipse IDE for the Go programming language:

Project website: http://goclipse.github.io/ As of 2017, Goclipse is no longer actively maintained, see this blog post for more information. If you are

null 841 Nov 18, 2022
Web-based IDE for the Go language

Welcome to godev! The aim of this project is to develop a premier Go language IDE hosted in a web interface. This was inspired by the way that the god

Chris McGee 347 Aug 26, 2022
golab: go local application builder - a web-based golang ide

golab golab was a Go IDE for Linux. This project is no longer maintained and might not build due to chganges in dependency projects. The author (mb0)

Martin Schnabel 149 Aug 16, 2022
A Golang plugin collection for SublimeText 3, providing code completion and other IDE-like features.

GoSublime Intro GoSublime is an IDE-like plugin for Sublime Text 3 mainly, but not limited to, providing integration for most of your Go/Golang develo

null 3.4k Nov 23, 2022
The Fyne IDE

DEFyne This repo contains the work-in-progress Fyne IDE. Features Embedded terminal TODO Various types of editor Syntax highlighting Standard run/test

Fyne.io 94 Nov 21, 2022
Source code editor written in Go using go-gtk bindings. It aims to handle navigation effectively among large number of files.

tabby Source code editor written in Go using go-gtk bindings. It aims to handle navigation effectively among large number of files. screenshot: depend

Mikhail Trushnikov 50 Nov 16, 2022
MdEdit is a Vi-like markdown editor built using Gio

MdEdit MdEdit is a Vi-like markdown editor built using Gio. It is extremely early stage software. The Vi editor lacks most functionality and might be

Steve Russo 3 Jun 29, 2022
Nightly binary builds of Emacs for macOS as a self-contained Emacs.app, with native-compilation.

Emacs Builds Nightly binary builds of Emacs for macOS as a self-contained Emacs.app, with native-compilation. Features Self-contained Emacs.app applic

Jim Myhrberg 221 Nov 23, 2022
Emacs mode for the Go programming language

This is go-mode, the Emacs mode for editing Go code. It is a complete rewrite of the go-mode that shipped with Go 1.0.3 and before, and was part of Go

Dominik Honnef 1.3k Nov 27, 2022
turn a directory into a GUI, slash example of VNC-based GUI

dirgui @rsnous on Jan 11, 2021: "idea: filesystem<->GUI adapter, where a directory turns into a form, executable files inside that directory turn into

Tom Lieber 32 May 3, 2022
LiteIDE is a simple, open source, cross-platform Go IDE.

LiteIDE X Introduction LiteIDE is a simple, open source, cross-platform Go IDE. Version: X37.3 (support Go modules) Author: visualfc Features Core fea

null 7k Nov 23, 2022
Eclipse IDE for the Go programming language:

Project website: http://goclipse.github.io/ As of 2017, Goclipse is no longer actively maintained, see this blog post for more information. If you are

null 841 Nov 18, 2022
Web-based IDE for the Go language

Welcome to godev! The aim of this project is to develop a premier Go language IDE hosted in a web interface. This was inspired by the way that the god

Chris McGee 347 Aug 26, 2022
golab: go local application builder - a web-based golang ide

golab golab was a Go IDE for Linux. This project is no longer maintained and might not build due to chganges in dependency projects. The author (mb0)

Martin Schnabel 149 Aug 16, 2022
A Golang plugin collection for SublimeText 3, providing code completion and other IDE-like features.

GoSublime Intro GoSublime is an IDE-like plugin for Sublime Text 3 mainly, but not limited to, providing integration for most of your Go/Golang develo

null 3.4k Nov 23, 2022
The in-browser IDE for Go

Go Wasm Go Wasm is a Go development environment with the essentials to write and run code entirely within the browser, using the power of WebAssembly

John Starich 445 Nov 9, 2022
A tool that helps you write code in your favorite IDE: your word processor!

WordIDE Have you ever wondered: How would it feel like to write code in a word processor? Me neither. But after months minutes of planning, I present

unsafecast 35 Jul 21, 2022
Lens - The Kubernetes IDE

Lens - The Kubernetes IDE ("Lens IDE") is a distribution of the OpenLens repository with Team Lens specific customizations released under a traditional EULA.

Lens - The Kubernetes IDE 19.9k Nov 20, 2022
Go Wasm is a in-browser IDE for Go

Go Wasm Go Wasm is a Go development environment with the essentials to write and run code entirely within the browser, using the power of WebAssembly

John Starich 445 Nov 9, 2022
The Fyne IDE

DEFyne This repo contains the work-in-progress Fyne IDE. Features Embedded terminal TODO Various types of editor Syntax highlighting Standard run/test

Fyne.io 94 Nov 21, 2022