Selected file

settings.json

.config/zed/settings.json

// Zed settings
//
// For information on how to configure Zed, see the Zed
// documentation: https://zed.dev/docs/configuring-zed
//
// To see all of Zed's default settings without changing your
// custom settings, run `zed: open default settings` from the
// command palette (cmd-shift-p / ctrl-shift-p)
{
  "cli_default_open_behavior": "existing_window",
  "session": {
    "trust_all_worktrees": true
  },
  "vim_mode": true,
  "agent_servers": {
    "codex-acp": {
      "default_config_options": {
        "mode": "read-only",
        "reasoning_effort": "medium",
        "model": "gpt-5.6-sol"
      },
      "type": "registry"
    },
    "claude-acp": {
      "default_config_options": {
        "effort": "medium"
      },
      "type": "registry"
    }
  },
  // Stepping through entries reuses one italic preview tab instead of
  // opening a tab per file β€” the closest thing to a Snacks preview pane.
  "preview_tabs": {
    "enabled": true,
    "enable_preview_from_project_panel": true,
    "enable_preview_from_file_finder": true,
    "enable_preview_from_code_navigation": true
  },

  "project_panel": { "dock": "right", "default_width": 260, "git_status": true },
  "git_panel": { "dock": "right", "default_width": 320 },
  "agent": {
    "dock": "bottom",
    // Only the dimension along the dock's axis applies: width when docked to a
    // side, height when docked to the bottom.
    "default_width": 480,
    "default_height": 420,
    // Off by default, which hides agent edits in normally opened files.
    "single_file_review": true,
    "expand_edit_card": true
  },

  // MCP servers for the agent. Started locally as stdio subprocesses.
  "context_servers": {
    // `--editor` serves draw.io from the server itself, so no browser
    // extension is needed. Ports moved off the defaults (3333/3000) to stay
    // clear of local dev stacks; Codex runs its own instance on 7334/7331.
    "drawio": {
      "command": "npx",
      "args": [
        "-y",
        "drawio-mcp-server",
        "--editor",
        "--extension-port",
        "7333",
        "--http-port",
        "7330"
      ],
      "env": {}
    }
  },

  // Ports lua/core/options.lua: hybrid line numbers, cursorline, scrolloff.
  "relative_line_numbers": "enabled",
  "current_line_highlight": "line",
  "vertical_scroll_margin": 8,
  "horizontal_scroll_margin": 8,

  "inlay_hints": { "enabled": true },
  "diagnostics": { "inline": { "enabled": true } },

  // On-demand only, like conform.nvim.
  "format_on_save": "off",
  "auto_install_extensions": { "svelte": true },

  // Server settings live in each project (pyrightconfig.json, .zed/settings.json),
  // not here.
  //
  // Formatting runs in two phases: code_actions_on_format first, then formatter.
  // That is where linting with autofix hooks in.
  "languages": {
    "JavaScript": {
      "code_actions_on_format": { "source.fixAll.eslint": true },
      "formatter": "prettier"
    },
    "TypeScript": {
      "code_actions_on_format": { "source.fixAll.eslint": true },
      "formatter": "prettier"
    },
    "TSX": {
      "code_actions_on_format": { "source.fixAll.eslint": true },
      "formatter": "prettier"
    },
    "Svelte": {
      "code_actions_on_format": { "source.fixAll.eslint": true },
      "formatter": "prettier"
    },
    "JSON": { "formatter": "prettier" },
    "JSONC": { "formatter": "prettier" },
    "YAML": { "formatter": "prettier" },
    "Markdown": { "formatter": "prettier" },
    "CSS": { "formatter": "prettier" },
    "HTML": { "formatter": "prettier" },
    "Rust": { "formatter": "language_server" },
    "Go": {
      "code_actions_on_format": { "source.organizeImports": true },
      "formatter": "language_server"
    },
    "Python": {
      // pyright types, ruff lints and formats.
      "language_servers": ["pyright", "ruff"],
      "code_actions_on_format": {
        "source.fixAll.ruff": true,
        "source.organizeImports.ruff": true
      },
      "formatter": { "language_server": { "name": "ruff" } }
    }
  },

  "icon_theme": {
    "mode": "dark",
    "light": "Material Icon Theme",
    "dark": "Material Icon Theme"
  },
  "ui_font_size": 16,
  "buffer_font_size": 15,
  "theme": {
    "mode": "dark",
    "light": "Gruvbox Light",
    "dark": "Gruvbox Dark",
  },
}