Symphony IDE - Recommended VSCode Settings

Based on a comprehensive review of Symphony's architecture, features, and project goals, this document outlines recommended VSCode settings for the Symphony project. These settings are organized into three main categories to optimize the development experience and maintain consistency across the project.

Must Exist Settings

These settings are essential for project consistency, development workflow, and maintaining the Symphony project standards:

{
  // Core project settings
  "editor.tabSize": 4,
  "editor.insertSpaces": true,
  "editor.detectIndentation": false,
  "editor.formatOnSave": true,
  "editor.defaultFormatter": null, // Will be overridden per-language
  "editor.codeActionsOnSave": {
    "source.fixAll": true,
    "source.organizeImports": true
  },

  // File handling and consistency
  "files.encoding": "utf8",
  "files.eol": "\\\\n",
  "files.insertFinalNewline": true,
  "files.trimTrailingWhitespace": true,
  "files.exclude": {
    "**/.git": true,
    "**/.svn": true,
    "**/.hg": true,
    "**/CVS": true,
    "**/.DS_Store": true,
    "**/Thumbs.db": true,
    "**/node_modules/*/**": true,
    "**/.cargo": true,
    "**/target/debug/**": true
  },

  // Git integration settings
  "git.enableSmartCommit": true,
  "git.confirmSync": false,
  "git.autofetch": true,
  "git.fetchOnPull": true,
  "git.branchPrefix": "symphony/",
  "git.branchSortOrder": "alphabetically",

  // Terminal settings for cross-platform consistency
  "terminal.integrated.defaultProfile.windows": "PowerShell",
  "terminal.integrated.defaultProfile.linux": "bash",
  "terminal.integrated.defaultProfile.osx": "zsh",
  "terminal.integrated.gpuAcceleration": "on",

  // Workspace trust settings
  "security.workspace.trust.enabled": true,
  "security.workspace.trust.startupPrompt": "once",
  "security.workspace.trust.untrustedFiles": "prompt"
}

Recommended Settings

These settings enhance development experience and are highly recommended for Symphony developers:

{
  // Editor experience
  "editor.wordWrap": "off",
  "editor.rulers": [100],
  "editor.bracketPairColorization.enabled": true,
  "editor.guides.bracketPairs": true,
  "editor.guides.bracketPairsHorizontal": "active",
  "editor.guides.highlightActiveBracketPair": true,
  "editor.guides.indentation": true,
  "editor.guides.highlightActiveIndentation": true,
  "editor.stickyScroll.enabled": true,
  "editor.minimap.enabled": true,
  "editor.minimap.renderCharacters": false,
  "editor.minimap.maxColumn": 100,
  "editor.minimap.showSlider": "always",
  "editor.semanticHighlighting.enabled": true,
  "editor.occurrencesHighlight": "multiFile",
  "editor.linkedEditing": true,
  "editor.foldingImportsByDefault": true,

  // Markdown and documentation support
  "markdown.preview.breaks": true,
  "markdown.validate.enabled": true,
  "markdown.updateLinksOnFileMove.enabled": "prompt",
  "markdown.preview.typographer": true,

  // Code intelligence
  "editor.suggestSelection": "first",
  "editor.inlineSuggest.enabled": true,
  "editor.parameterHints.enabled": true,
  "editor.quickSuggestions": {
    "other": true,
    "comments": false,
    "strings": false
  },
  "editor.acceptSuggestionOnCommitCharacter": true,
  "editor.acceptSuggestionOnEnter": "on",
  "editor.inlayHints.enabled": "on",

  // Search optimization
  "search.exclude": {
    "**/node_modules": true,
    "**/target": true,
    "**/.git": true,
    "**/dist": true,
    "**/build": true,
    "**/*.code-search": true
  },
  "search.searchOnType": true,
  "search.smartCase": true,
  "search.followSymlinks": false,
  "search.useGlobalIgnoreFiles": true,
  "search.useIgnoreFiles": true,

  // Explorer and UI configuration
  "workbench.editor.showTabs": true,
  "workbench.sideBar.location": "left",
  "workbench.statusBar.visible": true,
  "explorer.confirmDragAndDrop": false,
  "explorer.confirmDelete": true,
  "workbench.editor.enablePreview": false,
  "workbench.commandPalette.history": 100,
  "workbench.layoutControl.enabled": true,
  "workbench.editor.tabSizing": "shrink",

  // Symphony-specific musical theme settings
  "workbench.colorCustomizations": {
    "tab.activeBorder": "#8c61ff",
    "activityBar.background": "#1e1e2e",
    "sideBar.background": "#1e1e2e",
    "editor.background": "#1a1a2a",
    "statusBar.background": "#2a2a3a",
    "statusBar.noFolderBackground": "#2a2a3a",
    "statusBar.debuggingBackground": "#7c4dff"
  }
}

Additional Settings

These optional settings provide further customization for individual developers or specific workflows:

{
  // Performance optimizations
  "files.watcherExclude": {
    "**/.git/objects/**": true,
    "**/.git/subtree-cache/**": true,
    "**/node_modules/*/**": true,
    "**/.hg/store/**": true,
    "**/target/**": true,
    "**/dist/**": true,
    "**/build/**": true
  },
  "editor.largeFileOptimizations": true,

  // Visual enhancements
  "workbench.colorTheme": "Default Dark Modern", // Or "Symphony Dark" when created
  "workbench.iconTheme": "material-icon-theme", // Better for musical metaphor
  "workbench.productIconTheme": "material-product-icons",
  "window.commandCenter": true,
  "window.titleBarStyle": "custom",
  "window.menuBarVisibility": "toggle",

  // Productivity features
  "editor.fontSize": 14,
  "editor.fontFamily": "'Fira Code', Consolas, 'Courier New', monospace", // Fira Code has musical-looking ligatures
  "editor.fontLigatures": true,
  "editor.cursorSmoothCaretAnimation": "on",
  "editor.cursorBlinking": "phase",
  "editor.smoothScrolling": true,
  "editor.mouseWheelZoom": true,

  // Debug experience enhancement
  "debug.inlineValues": "auto",
  "debug.toolBarLocation": "docked",
  "debug.showInStatusBar": "always",
  "debug.focusWindowOnBreak": true,
  "debug.openDebug": "openOnDebugBreak",
  "debug.console.fontFamily": "'Fira Code', Consolas, 'Courier New', monospace",
  "debug.console.fontSize": 13,

  // Terminal customization
  "terminal.integrated.fontSize": 14,
  "terminal.integrated.fontFamily": "'Fira Code', Consolas, 'Courier New', monospace",
  "terminal.integrated.cursorBlinking": true,
  "terminal.integrated.persistentSessionScrollback": 5000,
  "terminal.integrated.tabs.enabled": true,
  "terminal.integrated.tabs.showActions": "always",
  "terminal.integrated.tabs.showActiveTerminal": "always",

  // IntelliSense tuning
  "editor.snippetSuggestions": "inline",
  "editor.tabCompletion": "on",
  "editor.wordBasedSuggestions": "matchingDocuments",
  "editor.suggest.preview": true,
  "editor.suggest.showStatusBar": true,

  // Symphony-specific settings
  "workbench.startupEditor": "welcomePage", // Can be replaced with Symphony welcome
  "workbench.tree.indent": 16, // Better for visualizing project structure as a "score"
  "workbench.tree.renderIndentGuides": "always",
  "workbench.view.alwaysShowHeaderActions": true
}

Language-Specific Settings

For specific languages used in Symphony, consider these settings:

{
  // TypeScript/JavaScript settings
  "[typescript]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode",
    "editor.formatOnSave": true,
    "editor.tabSize": 2,
    "editor.codeActionsOnSave": {
      "source.organizeImports": true,
      "source.fixAll.eslint": true
    }
  },
  "[javascript]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode",
    "editor.formatOnSave": true,
    "editor.tabSize": 2,
    "editor.codeActionsOnSave": {
      "source.organizeImports": true,
      "source.fixAll.eslint": true
    }
  },
  "typescript.updateImportsOnFileMove.enabled": "always",
  "javascript.updateImportsOnFileMove.enabled": "always",
  "typescript.preferences.importModuleSpecifier": "relative",
  "typescript.preferences.quoteStyle": "single",
  "javascript.preferences.quoteStyle": "single",
  "typescript.suggest.completeFunctionCalls": true,
  "javascript.suggest.completeFunctionCalls": true,

  // Python settings
  "[python]": {
    "editor.defaultFormatter": "ms-python.black-formatter",
    "editor.formatOnSave": true,
    "editor.tabSize": 4,
    "editor.insertSpaces": true,
    "editor.codeActionsOnSave": {
      "source.organizeImports": true
    }
  },
  "python.analysis.typeCheckingMode": "basic",
  "python.analysis.autoImportCompletions": true,
  "python.testing.pytestEnabled": true,
  "python.linting.enabled": true,
  "python.linting.pylintEnabled": true,
  "python.linting.flake8Enabled": true,

  // Rust settings
  "[rust]": {
    "editor.defaultFormatter": "rust-lang.rust-analyzer",
    "editor.formatOnSave": true,
    "editor.tabSize": 4
  },
  "rust-analyzer.checkOnSave.command": "clippy",
  "rust-analyzer.inlayHints.chainingHints.enable": true,
  "rust-analyzer.inlayHints.typeHints.enable": true,
  "rust-analyzer.cargo.allFeatures": true,

  // JSON settings
  "[json]": {
    "editor.defaultFormatter": "vscode.json-language-features",
    "editor.tabSize": 2,
    "editor.formatOnSave": true
  },
  "[jsonc]": {
    "editor.defaultFormatter": "vscode.json-language-features",
    "editor.tabSize": 2,
    "editor.formatOnSave": true
  },

  // HTML/CSS settings
  "[html]": {
    "editor.defaultFormatter": "vscode.html-language-features",
    "editor.formatOnSave": true,
    "editor.tabSize": 2
  },
  "[css]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode",
    "editor.formatOnSave": true,
    "editor.tabSize": 2
  },
  "[scss]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode",
    "editor.formatOnSave": true,
    "editor.tabSize": 2
  },

  // Markdown settings
  "[markdown]": {
    "editor.defaultFormatter": "yzhang.markdown-all-in-one",
    "editor.formatOnSave": true,
    "editor.wordWrap": "on",
    "editor.quickSuggestions": {
      "comments": false,
      "strings": true,
      "other": true
    }
  }
}

Extensions Recommendations

To complement these settings, the following extensions are recommended for Symphony development:

Essential Extensions

  1. EditorConfig for VS Code: Enforce consistent coding styles across different editors
  2. ESLint/TSLint: JavaScript/TypeScript linting with customizable rules
  3. Prettier: Code formatting with consistent style