Files
.vscode.d/settings.json
Jim Myhrberg c06e69e9b6 feat(keybindings): add Claude CLI terminal profile and rework keybindings
Replace Cursor-specific composerMode bindings with Claude Code focused
keybindings. The shift+cmd+c shortcut now opens a Claude CLI terminal
instead of toggling the extension sidebar, and cmd+i toggles the Claude
Code sidebar focus.

- Add "Claude" terminal profile (settings) to launch claude CLI
- Add shift+cmd+c to open Claude terminal in panel
- Add alt+shift+cmd+c macro to open Claude terminal in locked side editor
- Remap cmd+i to toggle Claude Code sidebar focus/blur
- Remove Cursor composerMode keybindings (agent, plan, chat)
- Fix shift+enter newline in terminal using kitty keyboard protocol
- Disable sendKeybindingsToShell for proper keybinding interception
- Move Claude Code preferred location to sidebar

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 11:28:50 +00:00

1179 lines
37 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
//
// ===========================================================================
// 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": "sidebar",
//
// ===========================================================================
// 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.autofetch": true,
"git.autoStash": true,
"git.blame.editorDecoration.enabled": false,
"git.detectSubmodules": true,
"git.fetchOnPull": true,
"git.timeline.showUncommitted": true,
"scm.defaultViewMode": "tree",
//
// ===========================================================================
// 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": true,
//
// ===========================================================================
// 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.profiles.osx": {
"Claude": {
"path": "claude",
"icon": "terminal"
}
},
"terminal.integrated.scrollback": 50000,
"terminal.integrated.sendKeybindingsToShell": false,
"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 Checkers
// ===========================================================================
// Extensions:
// - https://marketplace.visualstudio.com/items?itemName=elijah-potter.harper
// - https://marketplace.visualstudio.com/items?itemName=streetsidesoftware.code-spell-checker
//
"harper.isolateEnglish": true,
"harper.linters.Dashes": false,
"cSpell.checkVSCodeSystemFiles": true,
"cSpell.customDictionaries": {
// Run the `./siren <editor> 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: 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": {
"openClaudeTerminalBeside": [
{
"command": "workbench.action.terminal.newWithProfile",
"args": {
"profileName": "Claude",
"location": "editor"
}
},
{
"command": "$delay",
"args": {
"delay": 100
}
},
"workbench.action.moveEditorToRightGroup",
{
"command": "$delay",
"args": {
"delay": 50
}
},
"workbench.action.lockEditorGroup"
],
"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"
]
}
}