{"slug": "tinygo-in-zed", "title": "TinyGo in Zed", "summary": "Developer oxplot released tinygo-zed, a command-line utility that configures Zed's native Go tooling to support TinyGo embedded targets, addressing the lack of support for TinyGo's GOROOT, architecture, and build tags in gopls. The tool, installable via 'go install github.com/oxplot/tinygo-zed@latest', generates gopls settings and custom Zed tasks for building, testing, and flashing, enabling hover, completion, navigation, and diagnostics for TinyGo projects in Zed.", "body_md": "# TinyGo in Zed\n\nI’ve moved my embedded Go work to\n[Zed](https://zed.dev/). It is super\nfast, pleasant and increasingly secure by default. For me it beats the shit out\nof messy VS Code: fewer layers, less interface debris and no feeling that my\ntext editor is a browser wearing a tool belt.\n\nZed is a native Rust application with a purpose-built, GPU-accelerated UI\ndesigned to render at\n[120\nframes per second](https://zed.dev/blog/videogame). Unfamiliar worktrees also open in\n[Restricted Mode](https://zed.dev/docs/worktree-trust), so project settings cannot start language\nor MCP servers until I explicitly trust the worktree. Speed without careless\ndefaults. Rather nice.\n\n## The TinyGo-shaped hole\n\nZed’s native Go support uses `gopls`\n\n, but TinyGo targets have their\nown `GOROOT`\n\n, architecture and build tags. Without those values,\n`gopls`\n\ncannot properly understand packages such as\n`machine`\n\nor names such as `machine.LED`\n\n.\n\nSo I wrote\n[ tinygo-zed](https://github.com/oxplot/tinygo-zed) to turn that procedure into one\ncommand. Install it alongside TinyGo, then run it from the project directory:\n\n```\ngo install github.com/oxplot/tinygo-zed@latest\ntinygo-zed init\n```\n\nChoose a target when prompted. The utility reads its actual metadata from\nTinyGo, writes the corresponding `gopls`\n\nsettings and adds custom Zed\ntasks for building, testing, size and allocation reports, and flashing. Open\nthe directory in Zed, click\n**Restricted Mode** in the title bar and trust the worktree.\nHover, completion, navigation and diagnostics should now understand the\nselected board, as in the screenshot above.\n\nIf the board changes, use `tinygo-zed target`\n\n. After upgrading\nTinyGo, run `tinygo-zed sync`\n\n. That’s the whole trick: keep Zed’s\nnative Go tooling and point it at the right reality.", "url": "https://wpnews.pro/news/tinygo-in-zed", "canonical_source": "https://blog.oxplot.com/tinygo-in-zed/", "published_at": "2026-08-16 12:55:06+00:00", "updated_at": "2026-08-16 13:10:49.881648+00:00", "lang": "en", "topics": ["developer-tools"], "entities": ["oxplot", "tinygo-zed", "Zed", "TinyGo", "gopls"], "alternates": {"html": "https://wpnews.pro/news/tinygo-in-zed", "markdown": "https://wpnews.pro/news/tinygo-in-zed.md", "text": "https://wpnews.pro/news/tinygo-in-zed.txt", "jsonld": "https://wpnews.pro/news/tinygo-in-zed.jsonld"}}