mirror of
https://github.com/jimeh/.vscode.d.git
synced 2026-02-19 03:16:39 +00:00
Allow terminal to forward keybindings to the shell for better compatibility with shell programs. Enable JSON schema downloads for improved JSON validation support. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1201 lines
38 KiB
JSON
1201 lines
38 KiB
JSON
{
|
||
//
|
||
// ===========================================================================
|
||
// MARK: Appearance
|
||
// ===========================================================================
|
||
//
|
||
// Dark/Light mode detection
|
||
"window.autoDetectColorScheme": true,
|
||
"window.systemColorTheme": "auto",
|
||
//
|
||
// Theme
|
||
"workbench.colorTheme": "One Dark Pro",
|
||
"workbench.preferredDarkColorTheme": "One Dark Pro",
|
||
"workbench.preferredLightColorTheme": "Solarized Light",
|
||
"workbench.iconTheme": "material-icon-theme",
|
||
//
|
||
// 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: Window Decorations
|
||
// ===========================================================================
|
||
// Extension:
|
||
// - https://marketplace.visualstudio.com/items?itemName=jimeh.glaze
|
||
//
|
||
"glaze.enabled": true,
|
||
"glaze.elements.statusBar": false,
|
||
"glaze.elements.activityBar": false,
|
||
//
|
||
// ===========================================================================
|
||
// 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 Graph
|
||
// ===========================================================================
|
||
// Extension:
|
||
// - https://marketplace.visualstudio.com/items?itemName=mhutchie.git-graph
|
||
//
|
||
"git-graph.dialog.fetchRemote.prune": 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": "sparkle"
|
||
}
|
||
},
|
||
"terminal.integrated.tabs.title": "${sequence}",
|
||
"terminal.integrated.scrollback": 50000,
|
||
"terminal.integrated.enableKittyKeyboardProtocol": true,
|
||
"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 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"
|
||
}
|
||
],
|
||
"json.schemaDownload.enable": true,
|
||
//
|
||
// ===========================================================================
|
||
// 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"
|
||
]
|
||
}
|
||
}
|