Tooltitude for Go: the gopls gaps a free extension actually closes

Tooltitude for Go: the gopls gaps a free extension actually closes

Tooltitude for Go v1.51.1 (VS Code, 29,574 installs, 4.74/5) adds six free-tier capabilities missing or weak in gopls: live CodeLens reference counts, per-row table-driven test debugging, code inspections including variable shadowing, 20+ postfix completions, 50+ code actions, and a Go-specific grouped references view.

VS Code / JetBrains Plugin Pick
2026/5/27 · 1:18
1 订阅 · 17 内容
The standard Go extension for VS Code runs on gopls (the official Go language server) and handles completions, go-to-definition, and formatting well enough. What it doesn't give you: a reference count above every function declaration, a "Debug" button on each row of a table-driven test, or a warning when a local variable silently shadows an imported package. Tooltitude for Go (tooltitudeteam.tooltitude) version 1.51.1 — updated May 24 — targets those gaps. 1
29,574 installs, 4.74/5 across 19 reviews. The free tier requires no account and no config changes. 1

What it adds on top of gopls

Tooltitude runs alongside the standard Go extension — it doesn't replace gopls on the free tier. Its free layer adds six categories of functionality that gopls either lacks or handles weakly: 2
FeatureWhat you getgopls equivalent
CodeLens reference countsLive count above every function, method, interface, and field: "15 references · 3 implementations"None
Table-driven test debuggerPer-row "Debug" CodeLens in test filesNone — requires manual conditional breakpoints
Code inspectionsVariable shadowing, unused assignments, unhandled errors, unreachable codePartial — gopls flags some errors but misses shadowing
Postfix completions.if, .for_range, .print, .return, 20+ more after any expressionNone
Code actions50+ quick-fixes: handle error, extract/inline variable, apply De Morgan's law, generate getter/setterSome overlap, fewer options
Go references viewReferences grouped by package → containing function, not just flat file listFlat list only
CodeLens showing reference and implementation counts above Go interface and struct definitions
Tooltitude CodeLens — reference and implementation counts inline on declarations. 1

Three features worth trying today

1. Debug a single table-driven test case

Standard workflow without Tooltitude: add a conditional breakpoint like i == 3 or comment out every test case except the one you want. With Tooltitude, each row in the test table gets a "Debug" CodeLens. Click it and the debugger starts at exactly that case, skipping all others.
func TestAdd(t *testing.T) {
    cases := []struct {
        a, b, want int
    }{
        {1, 2, 3},   // ← "Debug" appears here
        {0, 0, 0},   // ← "Debug" appears here
        {-1, 1, 0},  // ← "Debug" appears here
    }
    for _, c := range cases {
        got := Add(c.a, c.b)
        if got != c.want {
            t.Errorf("Add(%d, %d) = %d; want %d", c.a, c.b, got, c.want)
        }
    }
}

2. Postfix completions

Type any expression, add a dot, and Tooltitude shows a list of structural transformations. The most useful ones:
err.if        // expands to:  if err != nil { }
items.for_range // expands to:  for i, v := range items { }
result.return   // expands to:  return result
val.var         // expands to:  v := val
Tooltitude's own description of the intent: "Write Go code faster by using familiar dot notation to generate boilerplate: generate statements, call library functions, iterate over collections and more." 2
Postfix completion dropdown showing for_range and other options after typing a dot on an expression
Postfix completion in action — . after an expression triggers structural expansions. 1

3. Error handling code actions

Place the cursor on any unhandled error return — say, io.ReadAll(r) — and trigger the quick-fix menu. You get three concrete options: wrap the error with context, panic, or return the raw error. No boilerplate to type from memory.
data, err := io.ReadAll(r)
// Tooltitude quick-fix options:
// → Handle error (return err)
// → Handle error (panic)
// → Handle error (wrapped: return fmt.Errorf("...": %w, err))
VS Code quick-fix menu showing three error-handling options for an unhandled io.ReadAll error
Code action for unhandled errors — three concrete options appear in the quick-fix menu. 1

Install

Search Tooltitude for Go in the Extensions panel, or use the identifier: 1
tooltitudeteam.tooltitude
Requirements: VS Code 1.82.0 or later. No Go version requirement is documented. The extension is workspace-scoped — it activates per project, not globally. No configuration needed to get CodeLens and postfix completions working on first open.

Known issues and the Plus pricing problem

Three issues worth knowing before you rely on Tooltitude in production:
  • Project sync modifies go.mod/go.sum on open (GitHub issue #74, filed April 2026): Tooltitude v1.49.0+ automatically syncs the project on open and rewrites these files, which prevents branch switching while the extension is active. No setting to disable this behavior yet. 3
  • Completions for unimported packages don't work (issue #65, open since January 2026): typing fmt. when fmt isn't yet imported yields no suggestions. gopls handles this correctly. 4
  • Full LSP mode is experimental: the Plus-tier feature that lets Tooltitude replace gopls entirely is marked experimental and doesn't cover all gopls capabilities. 5
The Plus tier ($19.99/month, 30-day trial) adds dependency CodeLens, inline debug values, workspace-wide unused symbol reports, cross-package move declarations, and Protobuf/gRPC CodeLens. 6 The pricing drew pushback when it launched in 2024: one r/golang commenter noted that $19.99/month (~$240/year) is more than GoLand for individuals at $9.90/month. 7 Tooltitude responded that different pricing options are being explored. The free tier, though, covers the features most developers will actually reach for daily — one commenter put it directly: "Honestly even the free version makes vscode so much better." 8
Telemetry: Tooltitude collects usage data and diagnostic information by default, including a truncated vscode.env.machineId. You can disable it via VS Code's telemetry.telemetryLevel setting. 9

Plugin: Tooltitude for Go · Publisher: Tooltitude Team (verified) · Version: 1.51.1 · License: proprietary (GitHub repo MIT) Language: Go · IDE: VS Code ^1.82.0 · Use case: CodeLens, postfix completions, code inspections, table-driven test debugging Install: tooltitudeteam.tooltitude on VS Code Marketplace · GitHub support repo

围绕这条内容继续补充观点或上下文。

  • 登录后可发表评论。