2
0
Fork 0
mirror of https://github.com/discourse/discourse.git synced 2026-03-04 01:15:08 +08:00
discourse/.zed/settings.json.sample
Régis Hanol ed675a5eea
DEV: add Zed editor configuration (#36958)
Discourse already ships with VS Code settings samples, but more
developers are starting to use Zed as their daily driver. This adds a
shared config that matches the project's coding standards.

The config sets up:
- Proper tab sizes and formatting rules per language
- ESLint + Prettier integration for JS/TS/Glimmer files
- ruby-lsp with rubocop for Ruby
- stylelint for SCSS
- File type mappings for .gjs/.gts (Glimmer components)

This way, Zed users get format-on-save and linting that aligns with what
CI expects, reducing friction and style-related review comments.
2026-01-06 23:30:45 +01:00

105 lines
2.4 KiB
Text

{
"tab_size": 2,
"hard_tabs": false,
"ensure_final_newline_on_save": true,
"remove_trailing_whitespace_on_save": true,
"formatter": "auto",
"format_on_save": "on",
"languages": {
"JavaScript": {
"tab_size": 2,
"formatter": "prettier",
"language_servers": ["eslint", "typescript-language-server"],
"code_actions_on_format": {
"source.fixAll.eslint": true
}
},
"TypeScript": {
"tab_size": 2,
"formatter": "prettier",
"language_servers": ["eslint", "typescript-language-server"],
"code_actions_on_format": {
"source.fixAll.eslint": true
}
},
"Ruby": {
"tab_size": 2,
"language_servers": ["ruby-lsp", "!solargraph", "!sorbet", "!steep"]
},
"SCSS": {
"tab_size": 2,
"formatter": "prettier",
"language_servers": ["stylelint"]
},
"CSS": {
"tab_size": 2,
"formatter": "prettier"
},
"Handlebars": {
"tab_size": 2,
"formatter": "prettier",
"ensure_final_newline_on_save": false
},
"Markdown": {
"remove_trailing_whitespace_on_save": false
},
"YAML": {
"tab_size": 2
},
"JSON": {
"tab_size": 2
},
"Glimmer (JavaScript)": {
"tab_size": 2,
"language_servers": ["eslint", "typescript-language-server"],
"formatter": {
"external": {
"command": "pnpm",
"arguments": ["prettier", "--stdin-filepath", "{buffer_path}"]
}
},
"code_actions_on_format": {
"source.fixAll.eslint": true
}
},
"Glimmer (TypeScript)": {
"tab_size": 2,
"language_servers": ["eslint", "typescript-language-server"],
"formatter": {
"external": {
"command": "pnpm",
"arguments": ["prettier", "--stdin-filepath", "{buffer_path}"]
}
},
"code_actions_on_format": {
"source.fixAll.eslint": true
}
}
},
"lsp": {
"eslint": {
"settings": {
"workingDirectory": { "mode": "auto" },
"validate": ["javascript", "typescript", "glimmer-js", "glimmer-ts"]
}
},
"ruby-lsp": {
"initialization_options": {
"formatter": "syntax_tree",
"linters": ["rubocop"]
}
},
"stylelint": {
"settings": {
"validate": ["css", "scss"]
}
}
},
"file_types": {
"Glimmer (JavaScript)": ["gjs"],
"Glimmer (TypeScript)": ["gts"]
}
}