jwogrady Working notes on tools, and why they earn their place

Zed, for this repo

The one that cost an afternoon

Autosave is off by default. Edits live in the buffer until you press ctrl-s, and an unsaved tab shows a filled dot instead of its close button. A build that does not reflect what is on screen is almost always this.

// settings.json — ctrl-shift-p → "zed: open settings"
{
  "autosave": "on_focus_change"
}

Worth setting for prose

{
  "soft_wrap": "editor_width",
  "file_types": { "Markdown": ["md"] },
  "languages": {
    "Markdown": {
      "soft_wrap": "editor_width",
      "remove_trailing_whitespace_on_save": false
    }
  }
}

Trailing whitespace is off deliberately for Markdown: two trailing spaces is a hard line break, and stripping them on save silently rewrites the text.

Snippets

Zed reads snippets from ~/.config/zed/snippets/markdown.json. A front matter block worth having:

{
  "Journal entry": {
    "prefix": "jrn",
    "body": [
      "+++",
      "title    = '$1'",
      "date     = ${2:2026-01-01T09:00:00-06:00}",
      "draft    = true",
      "tags     = [$3]",
      "archives = [\"${4:2026}\", \"${5:2026-01}\", \"${6:2026-01-01}\"]",
      "resolves = \"JRN ${7:26-000}\"",
      "aliases  = [\"/r/${7:26-000}/\"]",
      "description = '$8'",
      "+++",
      "",
      "$0"
    ]
  }
}

hugo new does the same job from the archetype and fills the dates correctly. The snippet is for when you are already in the editor.

Keys that transfer

The bindings borrow from Sublime and VS Code, so most muscle memory carries. The ones used constantly here: ctrl-p file finder, ctrl-shift-f project search, ctrl-shift-p command palette, ctrl-``` terminal panel — which is where hugo server -D` should run so the preview and the editor are one window.