Files
.vscode.d/settings.json

813 lines
25 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,
//
// ===========================================================================
// MARK: Window
// ===========================================================================
//
"window.commandCenter": true,
"window.customTitleBarVisibility": "auto",
"window.nativeFullScreen": false, // Does not work with nativeTabs enabled.
"window.nativeTabs": true,
"window.title": "${rootName}${separator}${profileName}",
//
// ===========================================================================
// MARK: Cursor (Text Editor)
// ===========================================================================
//
"cursor.aipreview.enabled": true,
"cursor.cpp.enablePartialAccepts": true,
"cursor.diffs.useCharacterLevelDiffs": true,
"cursor.general.enableShadowWorkspace": true,
"cursor.terminal.usePreviewBox": true,
"update.releaseTrack": "prerelease",
//
// ===========================================================================
// MARK: Windsurf (Text Editor)
// ===========================================================================
//
"windsurf.autocompleteSpeed": "fast",
//
// ===========================================================================
// MARK: GitHub Copilot
// ===========================================================================
//
"github.copilot.chat.agent.thinkingTool": true,
//
// ===========================================================================
// 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.cursorSurroundingLines": 5,
//
// 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": "off",
//
// ===========================================================================
// MARK: Workbench
// ===========================================================================
//
// Activity Bar
"workbench.activityBar.location": "top",
"workbench.activityBar.orientation": "horizontal",
//
// 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: 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": {
"gitconfig": "gitconfig",
"gitignore": "gitignore"
},
//
// Encoding
"files.autoGuessEncoding": true,
//
// Formatting
"files.insertFinalNewline": true,
"files.trimFinalNewlines": true,
"files.trimTrailingWhitespace": true,
//
// Read-only
"files.readonlyFromPermissions": true,
//
// ===========================================================================
// MARK: Git
// ===========================================================================
//
"git.blame.editorDecoration.enabled": false,
"scm.defaultViewMode": "tree",
//
// ===========================================================================
// MARK: Diffs
// ===========================================================================
//
"diffEditor.ignoreTrimWhitespace": false,
//
// ===========================================================================
// MARK: Terminal
// ===========================================================================
//
"terminal.integrated.allowChords": false,
"terminal.integrated.macOptionIsMeta": true,
"terminal.integrated.persistentSessionScrollback": 1000,
"terminal.integrated.scrollback": 50000,
"terminal.integrated.sendKeybindingsToShell": 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 <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",
"~/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: MCP Servers (VSCode)
// ===========================================================================
//
"mcp": {
"servers": {
"context7": {
"type": "stdio",
"command": "mise",
"args": [
"x",
"npm:@upstash/context7-mcp",
"--",
"context7-mcp"
]
}
}
},
//
// ===========================================================================
// 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.updateOpenTerminalsEnvAutomatically": true,
//
// ===========================================================================
// 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: 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-docker
//
"[dockerfile]": {
"editor.defaultFormatter": "ms-azuretools.vscode-containers"
},
//
// ===========================================================================
// 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
},
"go-lines.lineLength": 120,
"go.coverageDecorator": {
"type": "gutter",
"coveredGutterStyle": "verticalblue",
"uncoveredGutterStyle": "verticalyellow"
},
"go.formatTool": "gofumpt",
"go.inlayHints.constantValues": true,
"go.lintOnSave": "workspace",
"go.lintTool": "golangci-lint",
"go.testExplorer.packageDisplayMode": "nested",
"go.testExplorer.showDynamicSubtestsInEditor": true,
"go.testFlags": [
"-count=1"
],
"go.useLanguageServer": true,
"gopls": {
"ui.diagnostic.analyses": {
"shadow": 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]": {
"editor.insertSpaces": true,
"editor.tabSize": 2,
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[jsonc]": {
"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.insertSpaces": true,
"editor.tabSize": 2
},
//
// ===========================================================================
// 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
//
"[markdown]": {
"editor.tabSize": 4,
"editor.indentSize": 2,
"editor.detectIndentation": false,
"editor.defaultFormatter": "DavidAnson.vscode-markdownlint"
},
"markdownlint.config": {
"no-hard-tabs": {
"ignore_code_languages": [
"go",
"makefile"
]
}
},
//
// ===========================================================================
// MARK: Lang: Ruby
// ===========================================================================
// Extensions:
// - https://marketplace.visualstudio.com/items?itemName=Shopify.ruby-extensions-pack
// - https://marketplace.visualstudio.com/items?itemName=connorshea.vscode-ruby-test-adapter
// - https://marketplace.visualstudio.com/items?itemName=dewski.simplecov
//
"[ruby]": {
"editor.defaultFormatter": "Shopify.ruby-lsp",
"editor.formatOnSave": true,
"editor.formatOnType": true,
"editor.insertSpaces": true,
"editor.tabSize": 2
},
"[erb]": {
"editor.defaultFormatter": "Shopify.ruby-lsp",
"editor.tabSize": 2
},
// Ruby LSP
"rubyLsp.featureFlags": {
"fullTestDiscovery": false
},
"rubyLsp.rubyVersionManager": {
"identifier": "auto"
},
// Ruby Test Explorer
"rubyTestExplorer.logpanel": false,
// Use mise to execute ruby test explorer bundler commands to ensure correct
// version of Ruby is used.
"rubyTestExplorer.minitestCommand": "mise x -- bundle exec rake",
"rubyTestExplorer.rspecCommand": "mise x -- bundle exec rspec",
"simplecov-vscode.enabled": false,
"simplecov.coverageDecorator": {
"type": "gutter",
"coveredGutterStyle": "verticalblue",
"uncoveredGutterStyle": "verticalyellow",
"uncoveredBranchGutterStyle": "verticalyellow"
},
//
// ===========================================================================
// MARK: Lang: Shellscript
// ===========================================================================
// Extensions:
// - https://marketplace.visualstudio.com/items?itemName=foxundermoon.shell-format
//
"[shellscript]": {
"editor.tabSize": 2,
"editor.insertSpaces": true
},
"[sh]": {
"editor.tabSize": 2,
"editor.insertSpaces": true
},
"[zsh]": {
"editor.tabSize": 2,
"editor.insertSpaces": true
},
"shellformat.useEditorConfig": true,
// Note: `shellformat.flag` is ignored when `shellformat.useEditorConfig` is
// enabled.
"shellformat.flag": "-i 2 -ci -sr",
//
// ===========================================================================
// MARK: Lang: YAML
// ===========================================================================
// Extensions:
// - https://marketplace.visualstudio.com/items?itemName=redhat.vscode-yaml
// - https://marketplace.visualstudio.com/items?itemName=arahata.linter-actionlint
//
"redhat.telemetry.enabled": false,
"[yaml]": {
"editor.defaultFormatter": "redhat.vscode-yaml",
"editor.tabSize": 2
},
//
// ===========================================================================
// 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": false,
//
// ===========================================================================
// MARK: vscode-color-picker
// ===========================================================================
// Extension:
// - https://marketplace.visualstudio.com/items?itemName=AntiAntiSepticeye.vscode-color-picker
//
"vscode-color-picker.languages": [
"go",
"javascript",
"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: Command aliases
// ===========================================================================
// Extension:
// - https://marketplace.visualstudio.com/items?itemName=ArturoDent.command-alias
//
"command aliases": {
"sortLines.sortLines": "sl", // Sort Lines - https://marketplace.visualstudio.com/items?itemName=Tyriar.sort-lines
"settings.cycle.commandCenter": "Toggle Command Center",
"macros.insertEmDash": "Insert Em Dash",
"macros.insertEnDash": "Insert En Dash"
},
//
// ===========================================================================
// 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"
]
}
}