CodePerfect is an IDE for Golang. It runs as fast as a video game, while providing the essential features of an IDE.
It's designed for people who currently write Go in Vim or Sublime Text, because they just want something that lets them write code and gets out of the way. The inconvenience for these users is that they either don't get IDE features, or they have to spend forever configuring some language plugin and working around all the UX friction.
CodePerfect is like Vim — fast, lightweight, and barebones — but quietly provides a whole suite of IDE features. It's a single batteries-included software package that magically "just works" out of the box.
- Jump to definition
- Find all references
- Parameter hints
- Find implementations and implemented interfaces
- Generate implementation
- AST-based navigation (walk the syntax tree)
- Generate struct tags
- Postfix completion macros
- Auto-rename anything
- Vim keybindings (most commands work)
- Fuzzy search for everything (files, declared symbols)
- Live project-wide search (updates after each keystroke)
- Global command palette (cmd+k)
- Ergonomic keyboard shortcuts for everything
- Auto format on save
- Automatically organize imports
- Integrated build/debug
The IDE is written in (C-style) C++ and OpenGL. It uses a custom-rendered UI for the main editor, imgui for everything else. Memory allocations are amortized with arenas and pools.
Currently only supports macOS, but is cross platform in theory, there are just a few functions that need to be ported over to Windows and Linux.
It's basically written the handmade way. No STL, language servers, big frameworks, or anything like that. Abstractions are kept to at minimum, the call stack never grows beyond a handful of functions deep. Code intellisense is completely handwritten – almost. Unfortunately I'm using tree-sitter for the incremental parser because I don't know how to write my own, but ripping it out is a WIP (that I can't wait to do).
If you're interested in playing with it there's a 7 day free trial. Let me know you're from Handmade Network and I'll extend your trial or give you a free/discounted license.
Thanks for reading, and hope to hear your thoughts and feedback!