{ // // =========================================================================== // MARK: Appearance // =========================================================================== // // Dark/Light mode detection "window.autoDetectColorScheme": true, "window.systemColorTheme": "auto", // // Theme "workbench.colorTheme": "One Dark Pro", "workbench.iconTheme": "material-icon-theme", "workbench.preferredDarkColorTheme": "One Dark Pro", "workbench.preferredLightColorTheme": "Solarized Light", // // One Dark Pro theme settings "oneDarkPro.vivid": true, "oneDarkPro.markdownStyle": false, // // =========================================================================== // MARK: Extensions // =========================================================================== // // Disable automatic extension updates. "extensions.autoUpdate": false, // =========================================================================== // MARK: Window // =========================================================================== // "window.commandCenter": true, "window.customTitleBarVisibility": "auto", "window.title": "${rootName}${separator}${profileName}", // Enabling nativeTabs prevents custom title bar styling, and non-native // fullscreen modes. "window.nativeTabs": true, // Requires nativeTabs to be disabled. "window.nativeFullScreen": false, // Requires nativeTabs to be disabled, and nativeFullScreen to be enabled. "window.titleBarStyle": "custom", // // =========================================================================== // MARK: Workbench // =========================================================================== // // Activity Bar "workbench.activityBar.location": "default", "workbench.activityBar.orientation": "vertical", // // Command Palette "workbench.commandPalette.history": 250, "workbench.commandPalette.preserveInput": true, // // Hover "workbench.hover.delay": 200, // // Local History "workbench.localHistory.maxFileEntries": 250, "workbench.localHistory.maxFileSize": 512, // // Tree "workbench.tree.indent": 18, "workbench.tree.renderIndentGuides": "always", // // =========================================================================== // MARK: Cursor (Text Editor) // =========================================================================== // "cursor.agent_layout_browser_beta_setting": true, "cursor.aipreview.enabled": true, "cursor.composer.usageSummaryDisplay": "always", "cursor.cpp.disabledLanguages": [ "plaintext" ], "cursor.cpp.enablePartialAccepts": true, "cursor.diffs.useCharacterLevelDiffs": true, "cursor.enable_agent_window_setting": true, "cursor.enable_git_worktrees_setting": true, "cursor.general.enableShadowWorkspace": true, "cursor.general.globalCursorIgnoreList": [ "**/*.cer", "**/*.crt", "**/*.key", "**/*.p12", "**/*.pem", "**/*.pfx", "**/*.prv", "**/.ansible/tmp/**", // Does not work. "**/.bundle/config", "**/.env", "**/.env*", "**/.npmrc", "**/.ssh/id_*", "**/.yarnrc", "**/.yarnrc.yml", "**/credentials.*.json", "**/credentials.json", "**/id_dsa", "**/id_rsa", "**/mcp.json", "**/npmrc", "**/secret.json", "**/secret.yaml", "**/secrets.json", "**/secrets.yaml", "**/tmp*" // Covers ansible-vault temp files. ], "cursor.terminal.usePreviewBox": true, "update.releaseTrack": "prerelease", // // =========================================================================== // MARK: Windsurf (Text Editor) // =========================================================================== // "windsurf.autocompleteSpeed": "fast", // // =========================================================================== // MARK: GitHub Copilot // =========================================================================== // "github.copilot.chat.agent.thinkingTool": true, "github.copilot.nextEditSuggestions.enabled": true, // // =========================================================================== // MARK: Chat (VSCode) // =========================================================================== // "chat.agentSessionProjection.enabled": true, "chat.agentsControl.enabled": true, "chat.checkpoints.showFileChanges": true, "chat.commandCenter.enabled": false, "chat.edits2.enabled": true, "chat.mcp.gallery.enabled": true, "chat.tools.terminal.outputLocation": "chat", "chat.unifiedAgentsBar.enabled": true, "chat.useNestedAgentsMdFiles": true, "chat.viewSessions.orientation": "stacked", "inlineChat.showGutterMenu": false, // // =========================================================================== // MARK: Claude Code // =========================================================================== // Extension: // - https://marketplace.visualstudio.com/items?itemName=anthropic.claude-code // "claudeCode.preferredLocation": "panel", // // =========================================================================== // MARK: Editor // =========================================================================== // // Font "editor.fontFamily": "'Menlo Nerd Font Mono', 'Menlo Nerd Font', Menlo, Monaco, 'Courier New', monospace", "editor.fontLigatures": false, "editor.fontWeight": "normal", "editor.fontSize": 12, // // Cursor "editor.cursorBlinking": "smooth", "editor.cursorSmoothCaretAnimation": "explicit", "editor.cursorSurroundingLines": 5, "editor.cursorWidth": 3, // // Whitespace "editor.renderWhitespace": "boundary", // // Formatting "editor.formatOnSave": true, "editor.formatOnPaste": true, "editor.formatOnSaveMode": "file", // // Rulers "editor.rulers": [ 80, 100, 120 ], // // Indentation "editor.tabSize": 4, "editor.indentSize": 2, "editor.detectIndentation": true, // // Semantic Highlighting "editor.semanticHighlighting.enabled": true, // // Minimap "editor.minimap.enabled": true, "editor.minimap.showSlider": "always", // // Modified Tabs "workbench.editor.highlightModifiedTabs": true, // // Accessibility "editor.accessibilitySupport": "on", "accessibility.windowTitleOptimized": false, // Force silence accessibility signal noises. Wisper Flow's editor integration // works as a screen reader, which activates VSCode's accessiblity support, // but that also comes with various sound queues on various operations. Hence // we silence them by setting volume to 0%. "accessibility.signalOptions.volume": 0, // // =========================================================================== // MARK: Explorer // =========================================================================== // // I like the idea of file nesting, but in practice I find myself hating it :( "explorer.fileNesting.enabled": false, "explorer.fileNesting.patterns": { "*.go": "${capture}_test.go, ${capture}_example_test.go, ${capture}_integration_test.go, ${capture}_internal_test.go", "Brewfile": "Brewfile.lock.json", "Gemfile": "Gemfile.lock", "go.mod": "go.sum" }, "explorer.sortOrder": "mixed", "explorer.sortOrderLexicographicOptions": "unicode", // // =========================================================================== // MARK: Files // =========================================================================== // // Associations "files.associations": { "*.gemfile": "ruby", ".env": "properties", ".env.*": "properties", "Elpaca.lock": "lisp", "Procfile.*": "procfile", "gitconfig": "gitconfig", "gitignore": "gitignore" }, // // Encoding "files.autoGuessEncoding": true, // // Formatting "files.insertFinalNewline": true, "files.trimFinalNewlines": true, "files.trimTrailingWhitespace": true, // // Read-only "files.readonlyFromPermissions": true, // // =========================================================================== // MARK: Testing // =========================================================================== // "testing.coverageToolbarEnabled": true, // // =========================================================================== // MARK: Git // =========================================================================== // "git.autoStash": true, "git.blame.editorDecoration.enabled": false, "git.detectSubmodules": true, "git.fetchOnPull": true, "git.timeline.showUncommitted": true, "scm.defaultViewMode": "tree", // // =========================================================================== // MARK: Git Worktree Manager // =========================================================================== // Extension: // - https://marketplace.visualstudio.com/items?itemName=jackiotyu.git-worktree-manager // "git-worktree-manager.terminalNameTemplate": "$LABEL ⇄", "git-worktree-manager.treeView.toSCM": true, "git-worktree-manager.treeView.worktreeDescriptionTemplate": "$BASE_NAME", "git-worktree-manager.worktreeCopyPatterns": [ "*.local", ".claude/settings.local.json", ".env", ".vscode/settings.json", ".vscode/settings.local.json" ], // // =========================================================================== // MARK: Diffs // =========================================================================== // "diffEditor.experimental.showMoves": true, "diffEditor.ignoreTrimWhitespace": false, "diffEditor.renderSideBySide": true, // // =========================================================================== // MARK: Terminal // =========================================================================== // "terminal.integrated.allowChords": false, "terminal.integrated.automationProfile.osx": { "path": "/bin/zsh" }, "terminal.integrated.defaultProfile.osx": "zsh", "terminal.integrated.macOptionIsMeta": true, "terminal.integrated.persistentSessionScrollback": 1000, "terminal.integrated.scrollback": 50000, "terminal.integrated.sendKeybindingsToShell": true, "terminal.integrated.shellIntegration.enabled": true, // // =========================================================================== // MARK: Awesome Emacs Keybindings // =========================================================================== // Extension: // - https://marketplace.visualstudio.com/items?itemName=tuttieee.emacs-mcx // "emacs-mcx.emacsLikeTab": false, // Done via custom keybinding instead. "emacs-mcx.killRingMax": 120, "emacs-mcx.markRingMax": 32, // // =========================================================================== // MARK: File Browser // =========================================================================== // Extension: // - https://marketplace.visualstudio.com/items?itemName=bodil.file-browser // "file-browser.hideDotfiles": false, "file-browser.labelIgnoredFiles": true, // // =========================================================================== // MARK: Spell Check // =========================================================================== // Extension: // - https://marketplace.visualstudio.com/items?itemName=streetsidesoftware.code-spell-checker // "cSpell.checkVSCodeSystemFiles": true, "cSpell.customDictionaries": { // Run the `./siren config` command to symlink // `cspell/vscode-user-dictionary.txt` into the `~/.cspell` directory. "custom-user-dictionary": { "name": "vscode-user-dictionary", "path": "~/.cspell/vscode-user-dictionary.txt", "addWords": true, "scope": "user" } }, // // =========================================================================== // MARK: Project Manager // =========================================================================== // Extension: // - https://marketplace.visualstudio.com/items?itemName=alefragnani.project-manager // "projectManager.git.baseFolders": [ "~/.config", "~/.dotfiles", "~/Documents/Obsidian Vaults", "~/Documents/Obsidian", "~/Projects", "~/src" ], "projectManager.git.ignoredFolders": [ "node_modules", "out", "typings", "test", ".haxelib", "tmp", "vendor", "straight", "elpaca" ], "projectManager.any.ignoredFolders": [ "node_modules", "out", "typings", "test", "tmp", "vendor", "straight", "elpaca" ], "projectManager.hg.ignoredFolders": [ "node_modules", "out", "typings", "test", ".haxelib", "straight", "elpaca" ], "projectManager.svn.ignoredFolders": [ "node_modules", "out", "typings", "test", "straight", "elpaca" ], "projectManager.vscode.ignoredFolders": [ "node_modules", "out", "typings", "test", "straight", "elpaca" ], // // =========================================================================== // MARK: GitHub // =========================================================================== // Extensions: // - https://marketplace.visualstudio.com/items?itemName=GitHub.vscode-pull-request-github // - https://marketplace.visualstudio.com/items?itemName=GitHub.remotehub // "githubRepositories.autoFetch.enabled": false, // // =========================================================================== // MARK: Mise (https://mise.jdx.dev/) // =========================================================================== // Extension: // - https://marketplace.visualstudio.com/items?itemName=hverlin.mise-vscode // "mise.autoDetectMiseBinPath": false, "mise.checkForNewMiseVersion": false, "mise.configureExtensionsAutomatically": false, "mise.updateOpenTerminalsEnvAutomatically": true, // When updateEnvAutomatically is enabled, open terminals in VSCode get // completely reset when mise installs new tools or updates. This wipes // previous command output, and even kills any running processes you have in // terminals. "mise.updateEnvAutomatically": false, // // =========================================================================== // MARK: Hex editor // =========================================================================== // Extension: // - https://marketplace.visualstudio.com/items?itemName=ms-vscode.hexeditor // "workbench.editor.defaultBinaryEditor": "hexEditor.hexedit", // // =========================================================================== // MARK: Rewrap Revived // =========================================================================== // Extension: // - https://marketplace.visualstudio.com/items?itemName=dnut.rewrap-revived // // Enable auto-wrap by default. In programming languages it only applies to // comments. "rewrap.autoWrap.enabled": true, // Only wrap the current paragraph when triggering rewrap with alt+q within a // comment. "rewrap.wholeComment": false, // // =========================================================================== // MARK: Periscope // =========================================================================== // Extension: // - https://marketplace.visualstudio.com/items?itemName=joshmu.periscope // "periscope.rgGlobExcludes": [ "**/.bundle/**", "**/.git/**", "**/.log/**", "**/.log/**", "**/.yarn/**", "**/.yarn/**", "**/dist/**", "**/node_modules/**", "**/straight/**", "**/vendor/**", "*.cjs", "*.cts", "*.log", "*.min-latest.css", "*.min-latest.js", "*.min.css", "*.min.js", "*.sql", "*.test" ], "periscope.rgMenuActions": [ { "label": "Go", "value": "--type-add 'go:go.{mod,work}' -t go" }, { "label": "JSON", "value": "-t json" }, { "label": "JS/TS", "value": "--type-add 'jsts:*.{js,ts,tsx,jsx}' -t jsts" }, { "label": "Ruby", "value": "-t ruby" }, { "label": "Rust", "value": "-t rust" }, { "label": "TOML", "value": "-t toml" }, { "label": "YAML", "value": "-t yaml" } ], "periscope.rgOptions": [ "--smart-case", "--sortr path", "--hidden" ], "periscope.showWorkspaceFolderInFilePath": false, "periscope.rgQueryParams": [ { // filter the results to a folder // Query: "redis -m module1" // After: "rg 'redis' --iglob '**/*module1*/**'" "regex": "^(.+) -m ([\\w-_\/]+)$", "param": "--iglob '**/*$1*/**'" }, { // filter the results to a folder and filetype // Query: "redis -m module1 yaml" // After: "rg 'redis' --iglob '**/*module1*/**/*.yaml'" "regex": "^(.+) -m ([\\w-_\/]+) ([\\w]+)$", "param": "--iglob '**/*$1*/**/*.$2'" }, { // filter the results that match a glob // Query: "redis -g *module" // After: "rg 'redis' -g '*module'" "regex": "^(.+) -g (.+)$", "param": "-g '$1'" }, { // filter the results that match a glob // Query: "redis -ig *module" // After: "rg 'redis' -iglob '*module'" "regex": "^(.+) -ig (.+)$", "param": "--iglob '$1'" }, { // filter the results to rg filetypes // Query: "redis -t yaml" // After: "rg 'redis' -t yaml" "regex": "^(.+) -t ?(\\w+)$", "param": "-t $1" }, { // filter the results that match a file extension through a glob // Query: redis *.rs => rg 'redis' -iglob '*.rs' "regex": "^(.+) \\*\\.(\\w+)$", "param": "--iglob '*.$1'" } ], // // =========================================================================== // MARK: Prettier // =========================================================================== // "prettier.resolveGlobalModules": true, // // =========================================================================== // MARK: Lang: CSS // =========================================================================== // "[css]": { "editor.insertSpaces": true, "editor.tabSize": 2, "editor.defaultFormatter": "vscode.css-language-features" }, // // =========================================================================== // MARK: Lang: Dockerfile // =========================================================================== // Extensions: // - https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-containers // "[dockerfile]": { "editor.defaultFormatter": "ms-azuretools.vscode-containers", "editor.insertSpaces": true, "editor.tabSize": 2 }, // // =========================================================================== // MARK: Lang: Docker Compose // =========================================================================== // Extensions: // - https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-containers // - https://marketplace.visualstudio.com/items?itemName=redhat.vscode-yaml // "[dockercompose]": { "editor.insertSpaces": true, "editor.tabSize": 2, "editor.autoIndent": "advanced", "editor.quickSuggestions": { "other": true, "comments": true, "strings": true }, "editor.defaultFormatter": "redhat.vscode-yaml" }, // // =========================================================================== // MARK: Lang: GitHub Actions Workflow // =========================================================================== // Extensions: // - https://marketplace.visualstudio.com/items?itemName=GitHub.vscode-github-actions // - https://marketplace.visualstudio.com/items?itemName=redhat.vscode-yaml // "[github-actions-workflow]": { "editor.defaultFormatter": "redhat.vscode-yaml", "editor.tabSize": 2, "editor.insertSpaces": true }, // // =========================================================================== // MARK: Lang: Go // =========================================================================== // Extensions: // - https://marketplace.visualstudio.com/items?itemName=golang.go // - https://marketplace.visualstudio.com/items?itemName=gofenix.go-lines // "[go]": { "editor.tabSize": 4, "editor.defaultFormatter": "golang.go" }, "go-lines.lineLength": 120, "go.coverageDecorator": { "type": "gutter", "coveredGutterStyle": "verticalblue", "uncoveredGutterStyle": "verticalyellow" }, "go.diagnostic.vulncheck": "Imports", "go.disableConcurrentTests": true, "go.editorContextMenuCommands": { "testFile": true, "testPackage": true, "fillStruct": true }, "go.formatTool": "default", "go.inlayHints.constantValues": true, "go.lintOnSave": "workspace", "go.lintTool": "golangci-lint-v2", "go.testExplorer.packageDisplayMode": "nested", "go.testExplorer.showDynamicSubtestsInEditor": true, "go.testFlags": [ "-count=1" ], "go.testTimeout": "90s", "go.toolsManagement.autoUpdate": true, "go.useLanguageServer": true, "gopls": { "formatting.gofumpt": true, "ui.diagnostic.analyses": { "shadow": true, "appendclippe": true }, "ui.diagnostic.staticcheck": true }, // // =========================================================================== // MARK: Lang: Helm Template // =========================================================================== // "[helm]": { "editor.tabSize": 2 }, // // =========================================================================== // MARK: Lang: HTML // =========================================================================== // "[html]": { "editor.insertSpaces": true, "editor.tabSize": 2 }, // // =========================================================================== // MARK: Lang: JSON // =========================================================================== // "[json][jsonc]": { "editor.insertSpaces": true, "editor.tabSize": 2, "editor.defaultFormatter": "vscode.json-language-features" }, "json.schemas": [ { // Release Please config "fileMatch": [ "/**/release-please-config.json" ], "url": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json" }, { // Release Please manifest "fileMatch": [ "/**/.release-please-manifest.json", "/**/release-please-manifest.json" ], "url": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/manifest.json" } ], // // =========================================================================== // MARK: Lang: JavaScript // =========================================================================== // "[javascript]": { "editor.defaultFormatter": "vscode.typescript-language-features", "editor.insertSpaces": true, "editor.tabSize": 2 }, // // =========================================================================== // MARK: Lang: TypeScript // =========================================================================== // Extensions: // - https://marketplace.visualstudio.com/items?itemName=Orta.vscode-jest // "[typescript]": { "editor.defaultFormatter": "vscode.typescript-language-features", "editor.insertSpaces": true, "editor.tabSize": 2 }, "jest.coverageFormatter": "GutterFormatter", // // =========================================================================== // MARK: Lang: Lua // =========================================================================== // Extensions: // - https://marketplace.visualstudio.com/items?itemName=sumneko.lua // "Lua.codeLens.enable": true, "Lua.diagnostics.globals": [ // Hammerspoon "hs", "spoon" ], "Lua.diagnostics.workspaceEvent": "OnChange", "Lua.hint.enable": true, // // =========================================================================== // MARK: Lang: Makefile // =========================================================================== // Extensions: // - https://marketplace.visualstudio.com/items?itemName=carlos-algms.make-task-provider // "[makefile]": { "editor.tabSize": 4, "editor.insertSpaces": true }, "makefile.configureOnOpen": false, "make-task-provider.telemetry": false, // // =========================================================================== // MARK: Lang: Markdown // =========================================================================== // Extensions: // - https://marketplace.visualstudio.com/items?itemName=DavidAnson.vscode-markdownlint // - https://marketplace.visualstudio.com/items?itemName=bierner.markdown-preview-github-styles // "[markdown]": { "editor.tabSize": 4, "editor.indentSize": 2, "editor.detectIndentation": false, "editor.defaultFormatter": "DavidAnson.vscode-markdownlint" }, "markdown-preview-github-styles.darkTheme": "dark_dimmed", "markdownlint.configFile": "~/.markdownlint.yaml", "markdownlint.config": { "no-hard-tabs": { // MD010 "ignore_code_languages": [ "caddyfile", "go", "makefile" ] }, "blanks-around-fences": { // MD031 "list_items": false }, "line-length": { // MD013 "line_length": 80, "code_blocks": false, "ignore_code_blocks": true, "code_block_line_length": 280, "tables": false } }, // // =========================================================================== // MARK: Lang: Nix // =========================================================================== // Extensions: // - https://marketplace.visualstudio.com/items?itemName=jnoortheen.nix-ide // - https://marketplace.visualstudio.com/items?itemName=arrterian.nix-env-selector // "nix.enableLanguageServer": true, "nix.serverPath": "nil", // // =========================================================================== // MARK: Lang: Ruby // =========================================================================== // Extensions: // - https://marketplace.visualstudio.com/items?itemName=Shopify.ruby-extensions-pack // - https://marketplace.visualstudio.com/items?itemName=dewski.simplecov // "[ruby][erb]": { "editor.defaultFormatter": "Shopify.ruby-lsp", "editor.tabSize": 2, "editor.insertSpaces": true }, "[ruby]": { "editor.formatOnSave": true, "editor.formatOnType": true }, // Ruby LSP "rubyLsp.featureFlags": { "fullTestDiscovery": true }, "rubyLsp.rubyVersionManager": { "identifier": "auto" }, "simplecov.coverageDecorator": { "type": "gutter", "coveredGutterStyle": "verticalblue", "uncoveredGutterStyle": "verticalyellow", "uncoveredBranchGutterStyle": "verticalyellow" }, // // =========================================================================== // MARK: Lang: Rust // =========================================================================== // Extensions: // - https://marketplace.visualstudio.com/items?itemName=rust-lang.rust-analyzer // "[rust]": { "editor.defaultFormatter": "rust-lang.rust-analyzer" }, "rust-analyzer.testExplorer": true, // // =========================================================================== // MARK: Lang: Shellscript // =========================================================================== // Extensions: // - https://marketplace.visualstudio.com/items?itemName=mads-hartmann.bash-ide-vscode // "[shellscript][sh][zsh]": { "editor.tabSize": 2, "editor.insertSpaces": true }, "bashIde.enableSourceErrorDiagnostics": true, "bashIde.shfmt.caseIndent": true, "bashIde.shfmt.spaceRedirects": true, // // =========================================================================== // MARK: Lang: YAML // =========================================================================== // Extensions: // - https://marketplace.visualstudio.com/items?itemName=redhat.vscode-yaml // "redhat.telemetry.enabled": false, "[yaml]": { "editor.defaultFormatter": "redhat.vscode-yaml", "editor.tabSize": 2, "editor.insertSpaces": true }, // // =========================================================================== // MARK: Lang: Zig // =========================================================================== // Extension: // - https://marketplace.visualstudio.com/items?itemName=ziglang.vscode-zig // "zig.zls.enabled": "on", // // =========================================================================== // MARK: Sort Lines // =========================================================================== // Extensions: // - https://marketplace.visualstudio.com/items?itemName=Tyriar.sort-lines // "sortLines.filterBlankLines": true, "sortLines.ignoreUnselectedLastLine": true, // // =========================================================================== // MARK: Text Tables // =========================================================================== // Extension: // - https://marketplace.visualstudio.com/items?itemName=RomanPeshkov.vscode-text-tables // "text-tables.showStatus": true, // // =========================================================================== // MARK: vscode-color-picker // =========================================================================== // Extension: // - https://marketplace.visualstudio.com/items?itemName=AntiAntiSepticeye.vscode-color-picker // "vscode-color-picker.languages": [ "go", "javascript", "json", "less", "postcss", "python", "ruby", "sss", "stylus", "svg", "typescript", "xml" ], // // =========================================================================== // MARK: Run on Save callbacks // =========================================================================== // Extension: // - https://marketplace.visualstudio.com/items?itemName=emeraldwalk.RunOnSave // "emeraldwalk.runonsave": { "commands": [ // { // Automatically chmod +x script files (first two bytes are `#!`). // "match": ".*", // "cmd": "if [ ! -x \"${file}\" ] && head -n 1 \"${file}\" | grep -q '^#!'; then echo \"Marking ${relativeFile} as executable...\" && chmod +x \"${file}\"; fi" // } ] }, // // =========================================================================== // MARK: Settings Cycle // =========================================================================== // Extension: // - https://marketplace.visualstudio.com/items?itemName=hoovercj.vscode-settings-cycler // "settings.cycle": [ { "id": "commandCenter", "overrideWorkspaceSettings": false, "values": [ { "window.customTitleBarVisibility": "auto" }, { "window.customTitleBarVisibility": "never" } ] } ], // // =========================================================================== // MARK: Excalidraw // =========================================================================== // Extension: // - https://marketplace.visualstudio.com/items?itemName=pomdtr.excalidraw-editor // "excalidraw.theme": "auto", "excalidraw.image": { "exportScale": 2, "exportWithBackground": true, "exportWithDarkMode": true }, // // =========================================================================== // MARK: Command aliases // =========================================================================== // Extension: // - https://marketplace.visualstudio.com/items?itemName=ArturoDent.command-alias // "command aliases": { "git.branchFrom": "gcb (Git: Create Branch from...)", "git.checkout": "gco (Git: Checkout to...)", "git.cloneRecursive": "gcl (Git: Clone Recursive)", "git.fetch": "gf (Git: Fetch)", "git.fetchPrune": "gfp (Git: Fetch Prune)", "git.pullRebase": "gp (Git: Pull Rebase)", "git.push": "gpu (Git: Push)", "git.renameBranch": "grb (Git: Rename Branch)", "git.stash": "gs (Git: Stash)", "git.stashApply": "gas (Git: Apply Stash...)", "git.stashIncludeUntracked": "gsu (Git: Stash Include Untracked)", "git.stashPop": "gps (Git: Pop Stash...)", "git.stashStaged": "gss (Git: Stash Staged)", "git.stashView": "gvs (Git: View Stash...)", "macros.insertEmDash": "Insert Em Dash (—)", "macros.insertEnDash": "Insert En Dash (–)", "settings.cycle.commandCenter": "Toggle Command Center", "sortLines.sortLines": "sl (Sort lines: ascending, case sensitive)", // Sort Lines - https://marketplace.visualstudio.com/items?itemName=Tyriar.sort-lines "workbench.action.reloadWindow": "rw (Reload Window)" }, // // =========================================================================== // MARK: Macros // =========================================================================== // Extension: // - https://marketplace.visualstudio.com/items?itemName=ctf0.macros // "macros.list": { "insertEmDash": [ { "command": "type", "args": { "text": "—" } } ], "insertEnDash": [ { "command": "type", "args": { "text": "–" } } ], // // cycleSpacing is a basic emulation Emacs' built-in cycle-spacing command. // It doesn't actually cycle spacing, but it performs the first step which // is to replace all spacing surrounding the cursor with a single space. // "cycleSpacing": [ "emacs-mcx.deleteHorizontalSpace", { "command": "type", "args": { "text": " " } } ], // // Run test macros which re-focus back into the editor after being // triggered. The test commands changes focus to the Test Results panel, and // no settings I found avoids this. Hence these macros trigger relevant test // running commands and then switches focus back to the editor. // // The 1 ms delay between the running tests and switch focus back allows for // the Test Results panel to appear and steal focus before we try and focus // back into the editor. Without the delay the focus commands runs before // Test Results appear and steal focus. // "runTestCurrentFile": [ "testing.runCurrentFile", { "command": "$delay", "args": { "delay": 1 } }, "workbench.action.focusActiveEditorGroup" ], "runTestCoverageCurrentFile": [ "testing.coverageCurrentFile", { "command": "$delay", "args": { "delay": 1 } }, "workbench.action.focusActiveEditorGroup" ], "runTestAtCursor": [ "testing.runAtCursor", { "command": "$delay", "args": { "delay": 1 } }, "workbench.action.focusActiveEditorGroup" ], "runTestCoverageAtCursor": [ "testing.coverageAtCursor", { "command": "$delay", "args": { "delay": 1 } }, "workbench.action.focusActiveEditorGroup" ], "runTestAll": [ "testing.runAll", { "command": "$delay", "args": { "delay": 1 } }, "workbench.action.focusActiveEditorGroup" ], "runTestCoverageAll": [ "testing.coverageAll", { "command": "$delay", "args": { "delay": 1 } }, "workbench.action.focusActiveEditorGroup" ], "runTestReRunLastRun": [ "testing.reRunLastRun", { "command": "$delay", "args": { "delay": 1 } }, "workbench.action.focusActiveEditorGroup" ], "runTestCoverageLastRun": [ "testing.coverageLastRun", { "command": "$delay", "args": { "delay": 1 } }, "workbench.action.focusActiveEditorGroup" ], "runTestReRunFailTests": [ "testing.reRunFailTests", { "command": "$delay", "args": { "delay": 1 } }, "workbench.action.focusActiveEditorGroup" ], "runTestDebugFailTests": [ "testing.debugFailTests", { "command": "$delay", "args": { "delay": 1 } }, "workbench.action.focusActiveEditorGroup" ], "runTestDebugLastRun": [ "testing.debugLastRun", { "command": "$delay", "args": { "delay": 1 } }, "workbench.action.focusActiveEditorGroup" ] } }