mirror of
https://github.com/microsoft/vscode.git
synced 2026-05-14 20:34:30 +01:00
a3d955d72a
- Move copilotChatSessions, remoteAgentHost, and agentHost providers from contrib/ into a new contrib/providers/ subfolder for clearer separation - Add ESLint layer rule 'contrib/providers/*/~' (before 'contrib/*/~') so sibling contrib folders cannot import directly from providers - Update all entry points (sessions.common.main.ts, sessions.desktop.main.ts, sessions.web.main.ts) to reference new provider paths - Port all upstream changes from origin/main to the new provider locations - Add contrib/providers entry to build/lib/i18n.resources.json - Rewrite docs: README.md, LAYOUT.md, LAYERS.md, SESSIONS.md, SKILL.md, sessions.instructions.md; add source-code-organization, coding-guidelines, and writing-tests instruction files; remove stale SESSIONS_PROVIDER.md and AGENTS_CHAT_WIDGET.md Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2.5 KiB
2.5 KiB
description, applyTo
| description | applyTo |
|---|---|
| VS Code coding guidelines — naming, style, types, strings, and code quality rules. Reference when writing or reviewing code. | src/vs/** |
Coding Guidelines
Canonical reference: https://github.com/microsoft/vscode/wiki/Coding-Guidelines
Also see the Source Code Organization wiki page.
Indentation
Use tabs, not spaces.
Naming
- PascalCase for types and enum values
- camelCase for functions, methods, properties, and local variables
- Use whole words when possible
Types
- Do not export types or functions unless shared across multiple components
- Do not introduce new types or values to the global namespace
Comments
- Use JSDoc style comments for functions, interfaces, enums, and classes
Strings
"double quotes"for user-visible strings that need localization'single quotes'for everything else- All user-visible strings must be externalized via
nls.localize()— no string concatenation, use{0}placeholders
UI Labels
- Title case for command labels, buttons, and menu items (each major word capitalized)
- Don't capitalize prepositions of four or fewer letters unless first or last word
- Sentence case for view titles/headings (only first word capitalized), no trailing period
Style
- Arrow functions over anonymous function expressions
- Only parenthesize arrow parameters when necessary:
x => x + xnot(x) => x + x - Always surround loop and conditional bodies with curly braces
- Open curly braces on the same line
- No surrounding whitespace in parenthesized constructs
- Prefer
export function x(…) {…}overexport const x = (…) => {…}at top-level scope (better stack traces)
Code Quality
- Include Microsoft copyright header in all files
- Prefer
async/awaitoverPromise.then() - Localize all user-facing messages
- Prefer named regex capture groups over numbered ones
- Do not use
anyorunknownunless absolutely necessary - Register disposables immediately after creation — use
DisposableStore,MutableDisposable, orthis._register() - Declare service dependencies in constructors via DI — never access services through
IInstantiationServiceelsewhere - Use
IEditorServiceto open editors, notIEditorGroupsService.activeGroup.openEditor - Avoid
bind()/call()/apply()solely forthis— prefer arrow functions - Avoid events for control flow between components — prefer direct method calls